home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / inter60d / INTERRUP.R < prev    next >
Text File  |  1999-01-03  |  211KB  |  5,149 lines

  1. Interrupt List, part 18 of 18
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3. --------r-92---------------------------------
  4. INT 92 - IBM ROM BASIC - used while in interpreter
  5. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  6.     BASIC.COM/BASICA.COM do not restore vector on termination
  7. --------N-92---------------------------------
  8. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  9.     BX:DX -> control block
  10. SeeAlso: INT 68"Sangoma"
  11. --------e-92E1-------------------------------
  12. INT 92 - Da Vinci eMail Dispatcher INTERFACE
  13.     AH = E1h
  14.     AL = function
  15.     BX = stack count (number of words to push)
  16.     CX:DX -> stack data (in word-reversed order ready to push)
  17. Return: AX = status (see #03979)
  18. Note:    preserves BP, DS, SI, DI; other registers may be destroyed
  19.  
  20. (Table 03979)
  21. Values for Da Vinci eMail function status:
  22.  0001h    success
  23.  FF97h    "ERS_NOT_AVAILABLE"
  24.  FF99h    "ERS_TOO_MANY_NAMES"
  25.  FF9Ah    "ERS_BAD_NAME_PASSWORD"
  26.  FFE3h    "ERS_NAME_NOT_FOUND"
  27.  FFF8h    "ERS_USE_STRING" (call NetGetError to get error string)
  28.  FFFFh    "ERS_NO_SUCH_FILE"
  29. --------e-92E100-----------------------------
  30. INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
  31.     AX = E100h
  32.     BX = size of parameter block in words (000Ah)
  33.     CX:DX -> parameter block (see #03980)
  34. Return: AX = 0001h success
  35. Desc:    this function is used to initialize the dispatcher
  36. SeeAlso: AX=E101h,AX=E103h
  37.  
  38. Format of Da Vinci eMail "NetInitStart" parameter block:
  39. Offset    Size    Description    (Table 03980)
  40.  00h    WORD    segment of ???
  41.  02h    WORD    offset of ???
  42.  04h    WORD    high part of long ???
  43.  06h    WORD    low part of long ???
  44.  08h    WORD    high part of long ???
  45.  0Ah    WORD    low part of long ???
  46.  0Ch    WORD    high part of long ???
  47.  0Eh    WORD    low part of long ???
  48.  10h    WORD    high part of long ???
  49.  12h    WORD    low part of long ???
  50. --------e-92E101BX0000-----------------------
  51. INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
  52.     AX = E101h
  53.     BX = 0000h
  54.     CX:DX ignored
  55. Return: AX = 0001h success
  56. SeeAlso: AX=E100h,AX=E180h
  57. --------e-92E102BX0000-----------------------
  58. INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
  59.     AX = E102h
  60.     BX = 0000h
  61.     CX:DX ignored
  62. Return: AX = 0001h success
  63. Desc:    this function is used to determine if the dispatcher is loaded
  64. SeeAlso: AX=E10Bh,AX=E180h
  65. --------e-92E103BX0000-----------------------
  66. INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
  67.     AX = E103h
  68.     BX = 0000h
  69.     CX:DX ignored
  70. Return: AX = status (see #03979)
  71. SeeAlso: AX=E100h
  72. --------e-92E104-----------------------------
  73. INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
  74.     AX = E104h
  75.     BX = size of parameter block in words (0006h)
  76.     CX:DX -> parameter block (see #03981)
  77. Return: AX = status (see #03979)
  78. Desc:    this function is used to verify node address for usernames
  79. SeeAlso: AX=E180h
  80.  
  81. Format of Da Vinci eMail "NetWhereIs" parameter block:
  82. Offset    Size    Description    (Table 03981)
  83.  00h    WORD    segment of node address buffer
  84.  02h    WORD    offset of node address buffer
  85.  04h    WORD    segment of uppercase username
  86.  06h    WORD    offset of uppercase username
  87.  08h    WORD    segment of "DVSEMAIL"
  88.  0Ah    WORD    offset of "DVSEMAIL"
  89. --------e-92E105-----------------------------
  90. INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
  91.     AX = E105h
  92.     BX = size of parameter block in words (0007h)
  93.     CX:DX -> parameter block (see #03982)
  94. Return: AX = 0000h Error
  95.     AX = handle
  96. Desc:    this function is used to open a submission channel
  97. SeeAlso: AX=E10Ah,AX=E106h,AX=E108h
  98.  
  99. Format of Da Vinci eMail "NetOpen" parameter block:
  100. Offset    Size    Description    (Table 03982)
  101.  00h    WORD    operation (1 = read, 2 = write)
  102.  02h    WORD    segment of uppercase To: username
  103.  04h    WORD    offset of uppercase To: username
  104.  06h    WORD    segment of "DVSEMAIL"
  105.  08h    WORD    offset of "DVSEMAIL"
  106.  0Ah    WORD    segment of node address
  107.  0Ch    WORD    offset of node address
  108. --------e-92E106BX0004-----------------------
  109. INT 92 - Da Vinci eMail Dispatcher - "NetRead"
  110.     AX = E106h
  111.     BX = 0004h
  112.     CX:DX -> parameter block
  113. Return: AX = 0001h
  114. SeeAlso: AX=E108h
  115. --------e-92E107BX0002-----------------------
  116. INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
  117.     AX = E107h
  118.     BX = 0002h
  119.     CX:DX -> parameter block
  120. Return: AX = 0001h
  121. SeeAlso: AX=E109h,AX=E180h
  122. --------e-92E108-----------------------------
  123. INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
  124.     AX = E108h
  125.     BX = size of parameter block in words (0004h)
  126.     CX:DX -> parameter block (see #03983)
  127. Return: AX = amount written
  128. Desc:    This function is used to write transactions to the dispatcher.
  129.       The command block is written first and then another call is used
  130.       to write the associated data.
  131. SeeAlso: AX=E106h
  132.  
  133. Format of Da Vinci eMail "NetWrite" parameter block:
  134. Offset    Size    Description    (Table 03983)
  135.  00h    WORD    buffer count (see #03985)
  136.  02h    WORD    segment of command buffer (see #03984)
  137.  04h    WORD    offset of command buffer
  138.  06h    WORD    handle from NetOpen
  139.  
  140. Format of Da Vinci eMail command buffer:
  141. Offset    Size    Description    (Table 03984)
  142.  00h    BYTE    command
  143.         21h '!' Protocol commands for remote control
  144.         41h 'A' Authorization protocol element
  145.         42h 'B' Return(back) routing information
  146.             Associated data is the From: username
  147.         43h 'C' Carbon Copy list
  148.             Associated data is a comma delimitted list of usernames
  149.         44h 'D' Distribution list
  150.             Associated data is a comma delimitted list of usernames
  151.         45h 'E' Mail end marker
  152.             No associated data
  153.         48h 'H' Mail message header
  154.             Associated data is a message header buffer
  155.         4Dh 'M' Mail message
  156.             Associated data is the body of the message
  157.         4Fh 'O' Object
  158.         50h 'P' Paperclip attachment
  159.         52h 'R' Routing information
  160.             Associated data is the To: username
  161.         53h 'S' Subject
  162.             Associated data is the subject of the message
  163.         54h 'T' Trail of Reply/Forwards
  164.  01h    BYTE    subcommand
  165.  02h    DWORD    length of associated data
  166.  
  167. Format of Da Vinci eMail message header buffer:
  168. Offset    Size    Description    (Table 03985)
  169.  00h 30 BYTEs    subject line
  170.  1Eh 24 BYTEs    To
  171.  36h 24 BYTEs    From
  172.  4Eh    DWORD    Time
  173.         BYTE    00h
  174.         BYTE    hour
  175.         BYTE    minute
  176.         BYTE    second
  177.  52h    DWORD    Date
  178.         BYTE    00h
  179.         BYTE    year
  180.         BYTE    month
  181.         BYTE    day
  182.  56h    DWORD    serial number (00000000h)
  183.  5Ah    WORD    mail types (see #03986)
  184.  5Ch    WORD    special types (0)
  185.  
  186. Bitfields for Da Vinci eMail mail types:
  187. Bit(s)    Description    (Table 03986)
  188.  7    blind carbon copy
  189.  6    carbon copy
  190.  5    priority
  191.  4    confidential
  192.  3    certified
  193.  2    bulk
  194.  1-0    class (first, second, third, bulk)
  195. --------e-92E109-----------------------------
  196. INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
  197.     AX = E109h
  198.     BX = size of parameter block in words (0001h)
  199.     CX:DX -> parameter block (see #03987)
  200. Return: AX = FF97h (ERS_NOT_AVAILABLE)
  201. SeeAlso: AX=E107h,AX=E180h
  202.  
  203. Format of Da Vinci eMail "NetErrorFix" parameter block:
  204. Offset    Size    Description    (Table 03987)
  205.  00h    WORD    ???
  206. --------e-92E10A-----------------------------
  207. INT 92 - Da Vinci eMail Dispatcher - "NetClose"
  208.     AX = E10Ah
  209.     BX = size of parameter block in words (0001h)
  210.     CX:DX -> parameter block (see #03988)
  211. Return: AX = 0001h
  212. Desc:    this function is used to close a dispatcher handle
  213. SeeAlso: AX=E105h
  214.  
  215. Format of Da Vinci eMail "NetClose" parameter block:
  216. Offset    Size    Description    (Table 03988)
  217.  00h    WORD    handle from NetOpen
  218. --------e-92E10B-----------------------------
  219. INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
  220.     AX = E10Bh
  221.     BX = size of parameter block in words (0004h)
  222.     CX:DX -> parameter block (see #03989)
  223. Return: AX = 0001h
  224. SeeAlso: AX=E102h,AX=E10Ch
  225.  
  226. Format of Da Vinci eMail "NetCheckQueue" parameter block:
  227. Offset    Size    Description    (Table 03989)
  228.  00h    WORD    segment of 24-byte username buffer
  229.  02h    WORD    offset of 24-byte username buffer
  230.  04h    WORD    segment of 24-byte protocol buffer
  231.  06h    WORD    offset of 24-byte protocol buffer
  232. --------e-92E10C-----------------------------
  233. INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
  234.     AX = E10Ch
  235.     BX = size of parameter block in words (0002h)
  236.     CX:DX -> parameter block (see #03990)
  237. Return: AX = 0001h
  238. SeeAlso: AX=E10Bh
  239.  
  240. Format of Da Vinci eMail "NetReadQueue" parameter block:
  241. Offset    Size    Description    (Table 03990)
  242.  00h    WORD    Segment of 128 byte node address buffer
  243.  02h    WORD    Offset of 128 byte node address buffer
  244. --------e-92E10D-----------------------------
  245. INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
  246.     AX = E10Dh
  247.     BX = size of parameter block in words (0006h)
  248.     CX:DX -> parameter block (see #03991)
  249. Return: AX = status (see #03979)
  250. Desc:    this function is used to verify username/password
  251. SeeAlso: AX=E10Eh
  252.  
  253. Format of Da Vinci eMail "NetSubmitName" parameter block:
  254. Offset    Size    Description    (Table 03991)
  255.  00h    WORD    segment of uppercase password string
  256.  02h    WORD    offset of uppercase password string
  257.  04h    WORD    segment of uppercase username string
  258.  06h    WORD    offset of uppercase username string
  259.  08h    WORD    segment of "DVSEMAIL"
  260.  0Ah    WORD    offset of "DVSEMAIL"
  261. --------e-92E10E-----------------------------
  262. INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
  263.     AX = E10Eh
  264.     BX = size of parameter block in words (0004h)
  265.     CX:DX -> parameter block (see #03992)
  266. Return: AX = 0001h
  267. Desc:    this function is used to remove a username
  268. SeeAlso: AX=E10Dh
  269.  
  270. Format of Da Vinci eMail "NetRemoveName" parameter block:
  271. Offset    Type    Description    (Table 03992)
  272.  00h    WORD    segment of uppercase username
  273.  02h    WORD    offset of uppercase username
  274.  04h    WORD    segment of "DVSEMAIL"
  275.  06h    WORD    offset of "DVSEMAIL"
  276. --------e-92E10FBX0000-----------------------
  277. INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
  278.     AX = E10Fh
  279.     BX = 0000h
  280.     CX:DX ignored
  281. Return: AX = 0001h
  282. SeeAlso: AX=E180h
  283. --------e-92E110-----------------------------
  284. INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
  285.     AX = E110h
  286.     BX = size of parameter block in words (0006h)
  287.     CX:DX -> parameter block (see #03993)
  288. Return: AX = 0001h
  289. SeeAlso: AX=E111h,AX=E113h
  290.  
  291. Format of Da Vinci eMail "NetGetAltRoute" parameter block:
  292. Offset    Size    Description    (Table 03993)
  293.  00h  6 WORDs    ???
  294. --------e-92E111-----------------------------
  295. INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
  296.     AX = E111h
  297.     BX = size of parameter block in words (0004h)
  298.     CX:DX -> parameter block (see #03994)
  299. Return: AX = 0001h
  300. SeeAlso: AX=E110h,AX=E113h
  301.  
  302. Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block:
  303. Offset    Size    Description    (Table 03994)
  304.  00h  4 WORDs    ???
  305. --------e-92E112-----------------------------
  306. INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
  307.     AX = E112h
  308.     BX = size of parameter block in words (0008h)
  309.     CX:DX -> parameter block (see #03995)
  310. Return: AX = 0001h
  311. SeeAlso: AX=E180h
  312.  
  313. Format of Da Vinci eMail "NetChangePassword" parameter block:
  314. Offset    Size    Description    (Table 03995)
  315.  00h  8 WORDs    ???
  316. --------e-92E113-----------------------------
  317. INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
  318.     AX = E113h
  319.     BX = size of parameter block in words (0008h)
  320.     CX:DX -> parameter block (see #03996)
  321. Return: AX = 0001h
  322. SeeAlso: AX=E110h,AX=E111h
  323.  
  324. Format of Da Vinci eMail "NetSetAltRoute" parameter block:
  325. Offset    Size    Description    (Table 03996)
  326.  00h  8 WORDs    ???
  327. --------e-92E175-----------------------------
  328. INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
  329.     AX = E175h
  330. Return: AX = 0012h
  331.     BX = PSP
  332. SeeAlso: AX=E180h
  333. --------e-92E180-----------------------------
  334. INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
  335.     AX = E180h
  336. Return: AX = 0012h if installed
  337.     ES:DX -> '$'-terminated driver information string
  338. SeeAlso: AX=E102h,AX=E105h,AX=E10Fh,AX=E175h
  339. --------r-93---------------------------------
  340. INT 93 - IBM ROM BASIC - used while in interpreter
  341. Notes:    called by ROM BASIC
  342.     BASIC.COM/BASICA.COM do not restore vector on termination
  343. --------N-93---------------------------------
  344. INT 93 - IBM TOKEN RING ADAPTER - ???
  345. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  346. --------r-94---------------------------------
  347. INT 94 - IBM ROM BASIC - used while in interpreter
  348. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  349.     BASIC.COM/BASICA.COM do not restore vector on termination
  350. --------s-94----SI0000-----------------------
  351. INT 94 u - PCM driver - INITIALIZE SOUND
  352.     SI = 0000h
  353.     ES:BX -> parameters
  354. Return: ???
  355. Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum
  356.       sound boards
  357. InstallCheck:    test for the signature string "PCMDRIVER" immediately preceding
  358.       the interrupt handler; the word preceding the signature gives the PCM
  359.       driver's version
  360. SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah
  361. Index:    installation check;PCM driver|PCM.COM;installation check
  362. Index:    PCM driver;installation check
  363. --------s-94----SI0001-----------------------
  364. INT 94 u - PCM driver - INITIALIZE PCM
  365.     SI = 0001h
  366.     ES:BX -> parameters
  367. Return: ???
  368. SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah
  369. --------s-94----SI0002-----------------------
  370. INT 94 u - PCM driver - INITIALIZE PCM INFO
  371.     SI = 0002h
  372.     ES:BX -> parameters (see #03997)
  373. Return: ???
  374. SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah
  375.  
  376. Format of PCM driver function 0002h parameters:
  377. Offset    Size    Description    (Table 03997)
  378.  00h    DWORD    rate
  379.  04h    WORD    channel number
  380.  06h    WORD    "comp"
  381.  08h    WORD    "dsize"
  382. --------s-94----SI0003-----------------------
  383. INT 94 u - PCM driver - INITIALIZE DMA BUFFER
  384.     SI = 0003h
  385.     ES:BX -> parameters (see #03998)
  386. Return: ???
  387. SeeAlso: SI=0000h,SI=000Ah,SI=000Bh
  388.  
  389. Format of PCM driver function 0003h parameters:
  390. Offset    Size    Description    (Table 03998)
  391.  00h    DWORD    -> DMA buffer
  392.  04h    WORD    size of DMA buffer
  393.  06h    WORD    number of divisions
  394. --------s-94----SI0004-----------------------
  395. INT 94 u - PCM driver - INITIALIZE USER FUNCTION
  396.     SI = 0004h
  397.     ES:BX -> parameters (see #03999)
  398. Return: ???
  399. SeeAlso: SI=0000h,SI=0001h
  400.  
  401. Format of PCM driver function 0004h parameters:
  402. Offset    Size    Description    (Table 03999)
  403.  00h    DWORD    -> user function
  404. --------s-94----SI0005-----------------------
  405. INT 94 u - PCM driver - BEGIN AUDIO PLAY
  406.     SI = 0005h
  407. Return: ???
  408. SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h
  409. --------s-94----SI0006-----------------------
  410. INT 94 u - PCM driver - BEGIN AUDIO RECORD
  411.     SI = 0006h
  412. Return: ???
  413. SeeAlso: SI=0005h,SI=0007h,SI=0009h
  414. --------s-94----SI0007-----------------------
  415. INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD
  416.     SI = 0007h
  417. Return: ???
  418. SeeAlso: SI=0005h,SI=0006h,SI=0008h
  419. --------s-94----SI0008-----------------------
  420. INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD
  421.     SI = 0008h
  422. Return: ???
  423. SeeAlso: SI=0007h
  424. --------s-94----SI0009-----------------------
  425. INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD
  426.     SI = 0009h
  427. Return: ???
  428. SeeAlso: SI=0005h,SI=0006h,SI=0007h
  429. --------s-94----SI000A-----------------------
  430. INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA
  431.     SI = 000Ah
  432. Return: ???
  433. SeeAlso: SI=0000h,SI=0001h,SI=0003h
  434. Index:    uninstall;PCM driver
  435. --------s-94----SI000B-----------------------
  436. INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK
  437.     SI = 000Bh
  438.     ES:BX -> parameters (see #04000)
  439. Return: ???
  440. SeeAlso: SI=0003h
  441.  
  442. Format of PCM driver functio 000Bh parameters:
  443. Offset    Size    Description    (Table 04000)
  444.  00h    DWORD    -> memory block to contain DMA buffer
  445.  04h    WORD    desired size of DMA buffer
  446. --------s-94----SI000D-----------------------
  447. INT 94 u - Media Vision PCM.COM - GET STATUS
  448.     SI = 000Dh
  449. Return: AX = status (0000h = waiting) (see #04001)
  450.  
  451. Bitfields for PCM.COM status:
  452. Bit(s)    Description    (Table 04001)
  453.  0    playing
  454.  1    recording
  455.  2    SBplaying
  456.  3    SBrecording
  457.  14    SBpaused
  458.  15    paused
  459. --------s-94----SI8000-----------------------
  460. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS
  461.     SI = 8000h
  462. Return: DX:AX -> DMA buffer
  463. Program: PCM.COM is a superset of the standard PCM driver which provides
  464.       additional functions for fine control of the driver
  465. InstallCheck:    for the Media Vision PCM.COM "shark" functions, test for the
  466.       signature "PCM-SHARK" at offset 107h in the INT 94 handler's segment
  467. SeeAlso: SI=8001h,SI=8004h
  468. Index:    installation check;Media Vision PCM.COM|PCM.COM;installation check
  469. Index:    Media Vision PCM.COM;"shark" functions
  470. --------s-94----SI8001-----------------------
  471. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS
  472.     SI = 8001h
  473. Return: AX = DMA buffer size
  474.     DX = divisions
  475. SeeAlso: SI=8000h
  476. --------s-94----SI8002-----------------------
  477. INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS
  478.     SI = 8002h
  479. Return: AX = status
  480.         0000h if board not at specified I/O address
  481.         other if board found
  482. Note:    the I/O address is specified by ORing the base I/O port shifted left
  483.       four bits into SI before calling INT 94
  484. SeeAlso: SI=8000h
  485. --------s-94----SI8004-----------------------
  486. INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER
  487.     SI = 8004h
  488. Return: AX = offset of note buffer (segment = segment of internal DMA buffer)
  489.     DX = size of buffer in note structures
  490. SeeAlso: SI=8000h
  491. --------s-94----SI8005-----------------------
  492. INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE
  493.     SI = 8005h
  494. Return: ???
  495. --------s-94----SI8011-----------------------
  496. INT 94 u - Media Vision PCM.COM - INITIALIZE
  497.     SI = 8011h
  498.     ES:BX -> "iobf91" structure
  499. Return: ???
  500. --------s-94----SI8012-----------------------
  501. INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD
  502.     SI = 8012h
  503.     ES:BX -> "i94f92buf" structure
  504. Return: ???
  505. SeeAlso: SI=8013h,SI=8014h
  506. --------s-94----SI8013-----------------------
  507. INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE
  508.     SI = 8013h
  509. Return: AX = number of sounds used
  510.     DX = maximum handles
  511. --------s-94----SI8014-----------------------
  512. INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND
  513.     SI = 8014h
  514.     ES:BX -> "i94f92buf" structure to be filled in
  515.         sound number field set to desired sound
  516. Return: AX = status
  517.         0000h successful
  518.         FFFFh sound number out of range
  519. SeeAlso: SI=8012h,SI=8013h
  520. --------s-94----SI8015-----------------------
  521. INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER
  522.     SI = 8015h
  523.     ES:BX -> DMA info structure (see #04002)
  524. Return: ???
  525.  
  526. Format of PCM.COM DMA info structure:
  527. Offset    Size    Description    (Table 04002)
  528.  00h    DWORD    -> DMA buffer (offset FFFFh = return current buffer info)
  529.  04h    WORD    DMA buffer size
  530.  06h    WORD    divisions
  531. --------s-94----SI8016-----------------------
  532. INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY
  533.     SI = 8016h
  534.     AX = hotkey number (01h-08h)
  535. Return: ???
  536. SeeAlso: AL=02h/SI=8017h
  537. --------s-94--01SI8017-----------------------
  538. INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT
  539.     AL = 01h
  540.     SI = 8017h
  541.     AH = new state (00h off, 01h on)
  542. Return: ???
  543. SeeAlso: AL=02h/SI=8017h
  544. --------s-94--02SI8017-----------------------
  545. INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE
  546.     AL = 02h
  547.     SI = 8017h
  548.     AH = new state (00h off, 01h on)
  549. Return: ???
  550. --------s-94--04SI8017-----------------------
  551. INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE
  552.     AL = 04h
  553.     SI = 8017h
  554.     AH = new state
  555.         00h off
  556.         01h on
  557.         CX = minimum delay
  558.         DX = maximum delay
  559. Return: ???
  560. --------s-94--08SI8017-----------------------
  561. INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE
  562.     AL = 08h
  563.     SI = 8017h
  564.     AH = new state
  565.         00h off
  566.         01h on
  567.         DX:CX = delay
  568. Return: ???
  569. SeeAlso: AL=10h/SI=8017h
  570. --------s-94--10SI8017-----------------------
  571. INT 94 u - Media Vision PCM.COM - TIMER CONTROL
  572.     AL = 10h
  573.     SI = 8017h
  574.     AH = timer options (see #04003)
  575.     DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
  576. Return: ???
  577. SeeAlso: AL=08h/SI=8017h
  578.  
  579. Bitfields for PCM.COM timer options:
  580. Bit(s)    Description    (Table 04003)
  581.  7    set timer
  582.  6    timer active (timer turned off if clear)
  583.  5-0    timer number
  584. --------s-94----SI8018-----------------------
  585. INT 94 u - Media Vision PCM.COM - GET INFO
  586.     SI = 8018h
  587.     AL = what to get
  588.         00h "F92state"
  589.         01h "F92bkgd"
  590.         02h "I10timer"
  591.         03h "I08state"
  592. Return: DX:AX -> desired information
  593. --------r-95---------------------------------
  594. INT 95 - IBM ROM BASIC - used while in interpreter
  595. Notes:    called by ROM BASIC
  596.     BASIC.COM/BASICA.COM do not restore vector on termination
  597. --------r-95---------------------------------
  598. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  599. Note:    use only when the R= option is invoked on entering APL
  600. --------r-96---------------------------------
  601. INT 96 - IBM ROM BASIC - used while in interpreter
  602. Notes:    called by ROM BASIC
  603.     BASIC.COM/BASICA.COM do not restore vector on termination
  604. --------U-96---------------------------------
  605. INT 96 U - KILL.COM, QKILL.COM - POP UP
  606. Program: KILL.COM is a TSR utility that allows you to terminate programs
  607.      by calling INT 21/AH=4Ch or reboot the computer (author unknown);
  608.      QKILL.COM is a modification of KILL.COM by Solar Designer that
  609.      supports QEMM's Quick Boot feature
  610. Notes:    This interrupt is intercepted but not chained by KILL.COM; it is never
  611.       called by KILL.COM itself. It points into the middle of KILL.COM's
  612.       INT 09 handler and assumes specific values have been placed on the
  613.       stack (thus it can't be called as an interrupt).
  614.     To invoke KILL, use the following code:
  615.         pushf
  616.         push cs
  617.         push offset $+0Dh
  618.         push ax
  619.         push es
  620.         push 0
  621.         pop  es
  622.         jmp  dword ptr es:[96h*4]
  623. --------r-97---------------------------------
  624. INT 97 - IBM ROM BASIC - used while in interpreter
  625. Notes:    called by ROM BASIC
  626.     BASIC.COM/BASICA.COM do not restore vector on termination
  627. --------r-98---------------------------------
  628. INT 98 - IBM ROM BASIC - used while in interpreter
  629. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  630.     BASIC.COM/BASICA.COM do not restore vector on termination
  631. --------r-99---------------------------------
  632. INT 99 - IBM ROM BASIC - used while in interpreter
  633. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  634.     BASIC.COM/BASICA.COM do not restore vector on termination
  635. --------r-9A---------------------------------
  636. INT 9A - IBM ROM BASIC - used while in interpreter
  637. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  638.     BASIC.COM/BASICA.COM do not restore vector on termination
  639. SeeAlso: INT 80"BASIC",INT 99,INT 9B
  640. --------r-9B---------------------------------
  641. INT 9B - IBM ROM BASIC - used while in interpreter
  642. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  643.     BASIC.COM/BASICA.COM do not restore vector on termination
  644. SeeAlso: INT 80"BASIC",INT 9A,INT 9C"BASIC"
  645. --------r-9C---------------------------------
  646. INT 9C - IBM ROM BASIC - used while in interpreter
  647. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  648.     BASIC.COM/BASICA.COM do not restore vector on termination
  649. SeeAlso: INT 80"BASIC",INT 9B,INT 9D"BASIC"
  650. --------v-9C---------------------------------
  651. INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR
  652. SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  653. --------r-9D---------------------------------
  654. INT 9D - IBM ROM BASIC - used while in interpreter
  655. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  656.     BASIC.COM/BASICA.COM do not restore vector on termination
  657. SeeAlso: INT 80"BASIC",INT 9C"BASIC",INT 9E"BASIC"
  658. --------v-9D---------------------------------
  659. INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT
  660. Note:    this vector is used by the virus to store the result of a call to
  661.       INT 2F/AH=13h
  662. SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  663. --------r-9E---------------------------------
  664. INT 9E - IBM ROM BASIC - used while in interpreter
  665. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  666.     BASIC.COM/BASICA.COM do not restore vector on termination
  667. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT 9F"BASIC"
  668. --------v-9E---------------------------------
  669. INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR
  670. SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS"
  671. --------r-9F---------------------------------
  672. INT 9F - IBM ROM BASIC - used while in interpreter
  673. Notes:    called by ROM BASIC
  674.     BASIC.COM/BASICA.COM do not restore vector on termination
  675. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT A0"BASIC"
  676. --------v-9F---------------------------------
  677. INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR
  678. Note:    while it is infecting a file, the INT13 virus grabs INT 13 and uses
  679.       this interrupt to store the existing INT 13 vector for later
  680.       restoration
  681. SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS",INT D3"VIRUS"
  682. --------r-A0---------------------------------
  683. INT A0 - IBM ROM BASIC - used while in interpreter
  684. Notes:    called by ROM BASIC
  685.     BASIC.COM/BASICA.COM do not restore vector on termination
  686. SeeAlso: INT 80"BASIC",INT 9F"BASIC",INT A1"BASIC"
  687. --------r-A0---------------------------------
  688. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  689. SeeAlso: INT 59"GSS"
  690. --------r-A1---------------------------------
  691. INT A1 - IBM ROM BASIC - used while in interpreter
  692. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  693.     BASIC.COM/BASICA.COM do not restore vector on termination
  694. SeeAlso: INT 80"BASIC",INT A0"BASIC",INT A2"BASIC"
  695. --------r-A2---------------------------------
  696. INT A2 - IBM ROM BASIC - used while in interpreter
  697. Notes:    called by ROM BASIC
  698.     BASIC.COM/BASICA.COM do not restore vector on termination
  699. SeeAlso: INT 80"BASIC",INT A1"BASIC",INT A3"BASIC"
  700. --------r-A3---------------------------------
  701. INT A3 - IBM ROM BASIC - used while in interpreter
  702. Notes:    called by ROM BASIC
  703.     BASIC.COM/BASICA.COM do not restore vector on termination
  704. SeeAlso: INT 80"BASIC",INT A2"BASIC",INT A4"BASIC"
  705. --------r-A4---------------------------------
  706. INT A4 - IBM ROM BASIC - used while in interpreter
  707. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  708.     BASIC.COM/BASICA.COM do not restore vector on termination
  709. SeeAlso: INT 80"BASIC",INT A3"BASIC",INT A5"BASIC"
  710. --------U-A4---------------------------------
  711. INT A4 U - Right Hand Man - API
  712.     AH = function number (v3.3 supports functions 00h-52h)
  713. Return: CF set on error
  714.     CF clear if successful
  715. Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
  716.       which has evolved into Futurus Team
  717. Note:    this interrupt is only hooked while popped up
  718. SeeAlso: INT 2F/AX=A4E0h
  719. --------r-A5---------------------------------
  720. INT A5 - IBM ROM BASIC - used while in interpreter
  721. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  722.     BASIC.COM/BASICA.COM do not restore vector on termination
  723. SeeAlso: INT 80"BASIC",INT A4"BASIC",INT A6"BASIC"
  724. --------r-A6---------------------------------
  725. INT A6 - IBM ROM BASIC - used while in interpreter
  726. Notes:    called by ROM BASIC
  727.     BASIC.COM/BASICA.COM do not restore vector on termination
  728. SeeAlso: INT 80"BASIC",INT A5"BASIC",INT A7"BASIC"
  729. --------r-A7---------------------------------
  730. INT A7 - IBM ROM BASIC - used while in interpreter
  731. Notes:    called by ROM BASIC
  732.     BASIC.COM/BASICA.COM do not restore vector on termination
  733. --------r-A8---------------------------------
  734. INT A8 - IBM ROM BASIC - used while in interpreter
  735. Notes:    called by ROM BASIC
  736.     BASIC.COM/BASICA.COM do not restore vector on termination
  737. --------r-A9---------------------------------
  738. INT A9 - IBM ROM BASIC - used while in interpreter
  739. Notes:    called by ROM BASIC
  740.     BASIC.COM/BASICA.COM do not restore vector on termination
  741. --------r-AA---------------------------------
  742. INT AA - IBM ROM BASIC - used while in interpreter
  743. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  744.     BASIC.COM/BASICA.COM do not restore vector on termination
  745. --------r-AB---------------------------------
  746. INT AB - IBM ROM BASIC - used while in interpreter
  747. Notes:    called by ROM BASIC
  748.     BASIC.COM/BASICA.COM do not restore vector on termination
  749. --------r-AC---------------------------------
  750. INT AC - IBM ROM BASIC - used while in interpreter
  751. Notes:    called by ROM BASIC
  752.     BASIC.COM/BASICA.COM do not restore vector on termination
  753. --------r-AD---------------------------------
  754. INT AD - IBM ROM BASIC - used while in interpreter
  755. Notes:    called by ROM BASIC
  756.     BASIC.COM/BASICA.COM do not restore vector on termination
  757. --------r-AE---------------------------------
  758. INT AE - IBM ROM BASIC - used while in interpreter
  759. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  760.     BASIC.COM/BASICA.COM do not restore vector on termination
  761. --------r-AF---------------------------------
  762. INT AF - IBM ROM BASIC - used while in interpreter
  763. Notes:    called by ROM BASIC
  764.     BASIC.COM/BASICA.COM do not restore vector on termination
  765. --------r-B0---------------------------------
  766. INT B0 - IBM ROM BASIC - used while in interpreter
  767. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  768.     BASIC.COM/BASICA.COM do not restore vector on termination
  769. --------r-B1---------------------------------
  770. INT B1 - IBM ROM BASIC - used while in interpreter
  771. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  772.     BASIC.COM/BASICA.COM do not restore vector on termination
  773. --------r-B2---------------------------------
  774. INT B2 - IBM ROM BASIC - used while in interpreter
  775. Notes:    called by ROM BASIC
  776.     BASIC.COM/BASICA.COM do not restore vector on termination
  777. --------r-B3---------------------------------
  778. INT B3 - IBM ROM BASIC - used while in interpreter
  779. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  780.     BASIC.COM/BASICA.COM do not restore vector on termination
  781. --------U-B370-------------------------------
  782. INT B3 - ZIPKEY - GET VERSION
  783.     AH = 70h
  784. Return: AH = major version
  785.     AL = minor version
  786.     CL = number of states and territories in current database
  787.     DH = year of current database - 1900
  788.     DL = month of current database's file date
  789. Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  790. Note:    if installed, the string "ZIPKEY" is present at offset 75h in the
  791.       interrupt handler's segment, and the byte at 7Bh contains the API
  792.       version number (00h for v1.x, 01h for v2.0)
  793. --------U-B371-------------------------------
  794. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  795.     AH = 71h
  796.     BX = abbreviation, in either case (first letter in BL)
  797. Return: CF set on error
  798.         AL = FFh
  799.     CF clear if successful
  800.         AL = ZIPKEY state code
  801. SeeAlso: AH=72h
  802. --------U-B372-------------------------------
  803. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  804.     AH = 72h
  805.     BL = ZIPKEY state code
  806. Return: CF set on error
  807.         AX destroyed
  808.     CF clear if successful
  809.         AX = abbreviation, in upper case
  810. SeeAlso: AH=71h,AH=73h
  811. --------U-B373-------------------------------
  812. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  813.     AH = 73h
  814.     BL = ZIPKEY state code
  815.     ES:DI -> buffer for name
  816. Return: CF set on error
  817.         AX destroyed
  818.     CF clear if successful
  819.         ES:DI points one byte beyond end of name
  820. SeeAlso: AH=72h
  821. --------U-B374-------------------------------
  822. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  823.     AH = 74h
  824.     DX = zipcode region (0-999)
  825.     CH = last two digits of zipcode (0-99)
  826.     ES:DI -> buffer
  827. Return: CF set on error
  828.         AX destroyed
  829.     CF clear if successful
  830.         ES:DI points one byte beyond end of digit string
  831. --------U-B375-------------------------------
  832. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  833.     AH = 75h
  834.     DX = zipcode region (0-999)
  835.     CH = last two digits of zipcode (0-99)
  836. Return: CF set on error (zipcode not found)
  837.         AL = suggested state code, FFh if none
  838.     CF clear if successful
  839.         AL = ZIPKEY state code
  840.         BX = area code (v2.0+)
  841. SeeAlso: AH=76h,AH=79h
  842. --------U-B376-------------------------------
  843. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  844.     AH = 76h
  845.     DX = zipcode region (0-999)
  846.     CH = last two digits of zipcode (0-99)
  847.     ES:DI -> buffer for name
  848. Return: CF set on error
  849.         AL = suggested state code, FFh if none
  850.         ES:DI buffer filled with suggested city name
  851.     CF clear if successful
  852.         AL = ZIPKEY state code
  853.         BX = area code (v2.0+)
  854.         ES:DI points one byte beyond end of name
  855. SeeAlso: AH=75h,AH=78h,AH=7Eh
  856. --------U-B377-------------------------------
  857. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  858.     AH = 77h
  859.     DX = zipcode region (0-999)
  860.     CH = last two digits of zipcode (0-99)
  861.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  862. Return: CF set on error
  863.         AX destroyed
  864.     CF clear if successful
  865.         zipcode specification as defined by the BX keystroke is placed in
  866.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  867.           by pressing the key specified by BX
  868. --------U-B378-------------------------------
  869. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  870.     AH = 78h
  871.     BL = ZIPKEY state code
  872.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  873. Return: BH = number of matching entries (set to 51 if more than 50)
  874.     DX = zipcode region of first match (0-999)
  875.     CL = last two digits of first zipcode in the range (0-99)
  876.     CH = last two digits of last zipcode in the range (0-99)
  877.     AX destroyed
  878. SeeAlso: AH=79h,AH=7Ah
  879. --------U-B379-------------------------------
  880. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  881.     AH = 79h
  882.     BL = ZIPKEY state code of first state to search
  883.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  884. Return: AL = ZIPKEY state code of first matching state
  885.     BH = number of matching entries (set to 51 if more than 50)
  886.     DX = zipcode region of first match (0-999)
  887.     CL = last two digits of first zipcode in first range (0-99)
  888.     CH = last two digits of last zipcode in first range (0-99)
  889. Note:    to find all matching cities, repeat search with BL set to one more than
  890.       the returned AL
  891. SeeAlso: AH=78h,AH=7Ah
  892. --------U-B37A-------------------------------
  893. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  894.     AH = 7Ah
  895.     BL = case number (0 to one less than value returned in BH by lookup)
  896. Return: AL = ZIPKEY state code
  897.     DX = zipcode region (0-999)
  898.     CL = last two digits of first zipcode in the range (0-99)
  899.     CH = last two digits of last zipcode in the range (0-99)
  900. SeeAlso: AH=78h,AH=79h
  901. --------U-B37B-------------------------------
  902. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  903.     AH = 7Bh
  904. Return: BL = maximum number of characters for a city name
  905.     BH = ZIPKEY state code for last city-name search, or FFh if none
  906.     CX:DX = internal code identifying last city search
  907.     AX destroyed
  908. SeeAlso: AH=7Ch
  909. --------U-B37C-------------------------------
  910. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  911.     AH = 7Ch
  912.     BL = maximum number of characters for a city name
  913.     BH = ZIPKEY state code for last city-name search, or FFh if none
  914.     CX:DX = internal code returned by AH=7Bh
  915. Return: CF set on error
  916.     CF clear if successful
  917.     AX destroyed
  918. SeeAlso: AH=7Bh
  919. --------U-B37D-------------------------------
  920. INT B3 - ZIPKEY - REQUEST POP UP
  921.     AH = 7Dh
  922.     BL = index number to simulate pressing a hotkey
  923.         FFh for immediate popup with no playback on return
  924. Return: CF set on error
  925.         AL = error code
  926.         FDh already busy with another request
  927.         FEh illegal function
  928.     CF clear if successful
  929.         AX destroyed
  930.         window popped up and was closed by the user
  931. SeeAlso: AH=70h
  932. --------U-B37E-------------------------------
  933. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  934.     AH = 7Eh
  935.     DX = zipcode region (0-999)
  936.     ES:DI -> buffer for name
  937. Return: CF set on error
  938.         AL = FFh region does not exist
  939.     CF clear if successful
  940.         AL = ZIPKEY state code
  941.         ES:DI points one byte beyond end of name
  942. SeeAlso: AH=76h
  943. --------U-B37F-------------------------------
  944. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  945.     AH = 7Fh
  946.     BL = function
  947.         00h turn off hotkeys
  948.         01h turn on hotkeys
  949.         02h return hotkey status
  950.         03h toggle hotkey status
  951. Return: AL = hotkey status
  952.         00h off
  953.         01h on
  954. --------U-B380-------------------------------
  955. INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
  956.     AH = 80h
  957.     BX = telephone area code (decimal)
  958. Return: CF clear if successful
  959.         AL = ZIPKEY state code
  960.         DX = first ZIP region for state (03E8h if Canada)
  961.         CX = number of ZIP regions in state
  962.     CF set on error
  963.         AL = FFh
  964.         DX = 03E9h
  965. --------r-B4---------------------------------
  966. INT B4 - IBM ROM BASIC - used while in interpreter
  967. Notes:    called by ROM BASIC
  968.     BASIC.COM/BASICA.COM do not restore vector on termination
  969. --------r-B4---------------------------------
  970. INT B4 - StackMan - REQUEST NEW STACK
  971. Return: SS:SP -> new stack
  972. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  973.       which functions as a replacement for the DOS STACK= command as well
  974.       as permitting multiple TSRs to share a pool of stack space
  975. InstallCheck:    test for the string "STACKXXX" at offset 0Ah from the
  976.       interrupt handler
  977. SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
  978. Index:    installation check;STACKMAN
  979. --------r-B5---------------------------------
  980. INT B5 - IBM ROM BASIC - used while in interpreter
  981. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  982.     BASIC.COM/BASICA.COM do not restore vector on termination
  983. SeeAlso: INT 80"BASIC",INT B4"BASIC",INT B6"BASIC"
  984. --------r-B5---------------------------------
  985. INT B5 - StackMan - RESTORE ORIGINAL STACK
  986.     SS:SP -> stack returned by INT B4
  987. Return: SS:SP restored to value before INT B4
  988. SeeAlso: INT 2F/AX=C9FFh,INT B4"StackMan"
  989. --------m-B5---------------------------------
  990. INT B5 U - Netroom NETSWAP4 - ???
  991.     ???
  992. Return: ???
  993. SeeAlso: INT 31/AH=57h
  994. --------r-B6---------------------------------
  995. INT B6 - IBM ROM BASIC - used while in interpreter
  996. Notes:    called by ROM BASIC
  997.     BASIC.COM/BASICA.COM do not restore vector on termination
  998. SeeAlso: INT 80"BASIC",INT B5"BASIC",INT B7"BASIC"
  999. --------y-B6---------------------------------
  1000. INT B6 - (NOT A VECTOR!) - USED BY TBFENCE
  1001. Program: TBFence is a security program by ESaSS B.V. which transparently
  1002.       encrypts floppies and optionally allows only encrypted diskettes to
  1003.       be accessed
  1004. Note:    the low word of this vector (0000h:02D8h) contains the segment of the
  1005.       TBFence INT 13h code, which starts with the signature word E487h;
  1006.       this forms the installation check
  1007.     the highest byte of this vector contains the start of a FAR JMP
  1008.       instruction to ???
  1009. SeeAlso: INT B7"TBFENCE"
  1010. Index:    installation check;TBFence
  1011. --------r-B7---------------------------------
  1012. INT B7 - IBM ROM BASIC - used while in interpreter
  1013. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1014.     BASIC.COM/BASICA.COM do not restore vector on termination
  1015. SeeAlso: INT 80"BASIC",INT B6"BASIC",INT B8"BASIC"
  1016. --------y-B7---------------------------------
  1017. INT B7 - TBFENCE - ???
  1018. SeeAlso: INT B6"TBFENCE"
  1019. --------r-B8---------------------------------
  1020. INT B8 - IBM ROM BASIC - used while in interpreter
  1021. Notes:    called by ROM BASIC
  1022.     BASIC.COM/BASICA.COM do not restore vector on termination
  1023. SeeAlso: INT 80"BASIC",INT B7"BASIC",INT B9"BASIC"
  1024. --------r-B9---------------------------------
  1025. INT B9 - IBM ROM BASIC - used while in interpreter
  1026. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1027.     BASIC.COM/BASICA.COM do not restore vector on termination
  1028. --------r-BA---------------------------------
  1029. INT BA - IBM ROM BASIC - used while in interpreter
  1030. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1031.     BASIC.COM/BASICA.COM do not restore vector on termination
  1032. --------r-BB---------------------------------
  1033. INT BB - IBM ROM BASIC - used while in interpreter
  1034. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1035.     BASIC.COM/BASICA.COM do not restore vector on termination
  1036. --------r-BC---------------------------------
  1037. INT BC - IBM ROM BASIC - used while in interpreter
  1038. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1039.     BASIC.COM/BASICA.COM do not restore vector on termination
  1040. --------r-BD---------------------------------
  1041. INT BD - IBM ROM BASIC - used while in interpreter
  1042. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1043.     BASIC.COM/BASICA.COM do not restore vector on termination
  1044. --------r-BE---------------------------------
  1045. INT BE - IBM ROM BASIC - used while in interpreter
  1046. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1047.     BASIC.COM/BASICA.COM do not restore vector on termination
  1048. SeeAlso: INT 80"BASIC",INT BD"BASIC",INT BF"BASIC"
  1049. --------Q-BE---------------------------------
  1050. INT BE - DESQview/X - ???
  1051. Note:    points at an IRET
  1052. SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
  1053. --------r-BF---------------------------------
  1054. INT BF - IBM ROM BASIC - used while in interpreter
  1055. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1056.     BASIC.COM/BASICA.COM do not restore vector on termination
  1057. SeeAlso: INT 80"BASIC",INT BE"BASIC",INT C0"BASIC"
  1058. --------r-C0---------------------------------
  1059. INT C0 - IBM ROM BASIC - used while in interpreter
  1060. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1061.     BASIC.COM/BASICA.COM do not restore vector on termination
  1062. SeeAlso: INT 80"BASIC",INT BF"BASIC",INT C1"BASIC"
  1063. --------d-C0---------------------------------
  1064. INT C0 - AMI BIOS - DRIVE 0 DATA
  1065. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  1066.       of the hard disk parameter table
  1067. SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C1"AMI",INT C2"AMI"
  1068. SeeAlso: INT C3"AMI",INT C4"AMI"
  1069. --------r-C1---------------------------------
  1070. INT C1 - IBM ROM BASIC - used while in interpreter
  1071. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1072.     BASIC.COM/BASICA.COM do not restore vector on termination
  1073. SeeAlso: INT 80"BASIC",INT C0"BASIC",INT C2"BASIC"
  1074. --------d-C1---------------------------------
  1075. INT C1 - AMI BIOS - DRIVE 0 DATA
  1076. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  1077.       of the hard disk parameter table
  1078. SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI",INT C2"AMI"
  1079. SeeAlso: INT C3"AMI"
  1080. --------r-C2---------------------------------
  1081. INT C2 - IBM ROM BASIC - used while in interpreter
  1082. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1083.     BASIC.COM/BASICA.COM do not restore vector on termination
  1084. SeeAlso: INT 80"BASIC",INT C1"BASIC",INT C3"BASIC"
  1085. --------d-C2---------------------------------
  1086. INT C2 - AMI BIOS - DRIVE 0 DATA
  1087. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  1088.       of the hard disk parameter table
  1089. SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI"
  1090. --------r-C3---------------------------------
  1091. INT C3 - IBM ROM BASIC - used while in interpreter
  1092. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1093.     BASIC.COM/BASICA.COM do not restore vector on termination
  1094. SeeAlso: INT 80"BASIC",INT C2"BASIC",INT C4"BASIC"
  1095. --------d-C3---------------------------------
  1096. INT C3 - AMI BIOS - DRIVE 0 DATA
  1097. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  1098.       of the hard disk parameter table
  1099. SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI"
  1100. --------r-C4---------------------------------
  1101. INT C4 - IBM ROM BASIC - used while in interpreter
  1102. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1103.     BASIC.COM/BASICA.COM do not restore vector on termination
  1104. SeeAlso: INT 80"BASIC",INT C3"BASIC",INT C5"BASIC"
  1105. --------d-C4---------------------------------
  1106. INT C4 - AMI BIOS - DRIVE 1 DATA
  1107. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  1108.       of the second hard disk's parameter table
  1109. SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C5"AMI"
  1110. SeeAlso: INT C6"AMI",INT C7"AMI"
  1111. --------r-C5---------------------------------
  1112. INT C5 - IBM ROM BASIC - used while in interpreter
  1113. Notes:    called by ROM BASIC
  1114.     BASIC.COM/BASICA.COM do not restore vector on termination
  1115. SeeAlso: INT 80"BASIC",INT C4"BASIC",INT C6"BASIC"
  1116. --------d-C5---------------------------------
  1117. INT C5 - AMI BIOS - DRIVE 1 DATA
  1118. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  1119.       of the second hard disk's parameter table
  1120. SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
  1121. SeeAlso: INT C6"AMI",INT C7"AMI"
  1122. --------r-C6---------------------------------
  1123. INT C6 - IBM ROM BASIC - used while in interpreter
  1124. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1125.     BASIC.COM/BASICA.COM do not restore vector on termination
  1126. SeeAlso: INT 80"BASIC",INT C5"BASIC",INT C7"BASIC"
  1127. --------r-C6---------------------------------
  1128. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  1129. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1130.       the older interrupts
  1131. SeeAlso: INT 86"APL"
  1132. --------d-C6---------------------------------
  1133. INT C6 - AMI BIOS - DRIVE 1 DATA
  1134. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  1135.       of the second hard disk's parameter table
  1136. SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
  1137. SeeAlso: INT C5"AMI",INT C7"AMI"
  1138. --------r-C7---------------------------------
  1139. INT C7 - IBM ROM BASIC - used while in interpreter
  1140. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1141.     BASIC.COM/BASICA.COM do not restore vector on termination
  1142. SeeAlso: INT 80"BASIC",INT C6"BASIC",INT C8"BASIC"
  1143. --------r-C7---------------------------------
  1144. INT C7 - APL*PLUS/PC - ???
  1145. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1146.       the older interrupts
  1147. SeeAlso: INT 87"APL"
  1148. --------d-C7---------------------------------
  1149. INT C7 - AMI BIOS - DRIVE 1 DATA
  1150. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  1151.       of the second hard disk's parameter table
  1152. SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
  1153. SeeAlso: INT C5"AMI",INT C6"AMI"
  1154. --------r-C8---------------------------------
  1155. INT C8 - IBM ROM BASIC - used while in interpreter
  1156. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1157.     BASIC.COM/BASICA.COM do not restore vector on termination
  1158. SeeAlso: INT 80"BASIC",INT C7"BASIC",INT C9"BASIC"
  1159. --------r-C8---------------------------------
  1160. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  1161. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1162.       the older interrupts
  1163. SeeAlso: INT 88/AL=00h"APL",INT 88/AL=08h"APL"
  1164. --------r-C9---------------------------------
  1165. INT C9 - IBM ROM BASIC - used while in interpreter
  1166. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1167.     BASIC.COM/BASICA.COM do not restore vector on termination
  1168. SeeAlso: INT 80"BASIC",INT C8"BASIC",INT CA"BASIC"
  1169. --------r-C9---------------------------------
  1170. INT C9 - APL*PLUS/PC - ???
  1171. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1172.       the older interrupts
  1173. SeeAlso: INT 89"APL"
  1174. --------r-CA---------------------------------
  1175. INT CA - IBM ROM BASIC - used while in interpreter
  1176. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1177.     BASIC.COM/BASICA.COM do not restore vector on termination
  1178. SeeAlso: INT 80"BASIC",INT C9"BASIC",INT CB"BASIC"
  1179. --------r-CA---------------------------------
  1180. INT CA - APL*PLUS/PC - PRINT SCREEN
  1181. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1182.       the older interrupts
  1183. SeeAlso: INT 8A"APL"
  1184. --------r-CB---------------------------------
  1185. INT CB - IBM ROM BASIC - used while in interpreter
  1186. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1187.     BASIC.COM/BASICA.COM do not restore vector on termination
  1188. SeeAlso: INT 80"BASIC",INT CA"BASIC",INT CC"BASIC"
  1189. --------r-CB---------------------------------
  1190. INT CB - APL*PLUS/PC - BEEP
  1191. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1192.       the older interrupts
  1193.     same as printing a ^G via INT 21/AH=02h
  1194. SeeAlso: INT 8B"APL"
  1195. --------r-CC---------------------------------
  1196. INT CC - IBM ROM BASIC - used while in interpreter
  1197. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1198.     BASIC.COM/BASICA.COM do not restore vector on termination
  1199. SeeAlso: INT 80"BASIC",INT CB"BASIC",INT CD"BASIC"
  1200. --------r-CC---------------------------------
  1201. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  1202.     AX = flag
  1203.         0000h do not save display attributes
  1204.         0001h save attributes
  1205. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1206.       the older interrupts
  1207. SeeAlso: INT 8C"APL"
  1208. --------r-CD---------------------------------
  1209. INT CD - IBM ROM BASIC - used while in interpreter
  1210. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1211.     BASIC.COM/BASICA.COM do not restore vector on termination
  1212. SeeAlso: INT 80"BASIC",INT CC"BASIC",INT CE"BASIC"
  1213. --------r-CD---------------------------------
  1214. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1215. --------r-CE---------------------------------
  1216. INT CE - IBM ROM BASIC - used while in interpreter
  1217. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1218.     BASIC.COM/BASICA.COM do not restore vector on termination
  1219. SeeAlso: INT 80"BASIC",INT CD"BASIC",INT CF"BASIC"
  1220. --------r-CE---------------------------------
  1221. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1222. --------r-CF---------------------------------
  1223. INT CF - IBM ROM BASIC - used while in interpreter
  1224. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1225.     BASIC.COM/BASICA.COM do not restore vector on termination
  1226. SeeAlso: INT 80"BASIC",INT CE"BASIC",INT D0"BASIC"
  1227. --------r-CF---------------------------------
  1228. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  1229. SeeAlso: INT E0"APL"
  1230. --------r-D0---------------------------------
  1231. INT D0 - IBM ROM BASIC - used while in interpreter
  1232. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1233.     BASIC.COM/BASICA.COM do not restore vector on termination
  1234. SeeAlso: INT 80"BASIC",INT CF"BASIC",INT D1"BASIC"
  1235. --------r-D0---------------------------------
  1236. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1237. --------U-D0---------------------------------
  1238. INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
  1239. Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty
  1240.       James" Blaszczak
  1241. Note:    if NJFRERAM is installed, this vector points at the signature "NJ"
  1242. Index:    installation check;NJFRERAM
  1243. --------r-D1---------------------------------
  1244. INT D1 - IBM ROM BASIC - used while in interpreter
  1245. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1246.     BASIC.COM/BASICA.COM do not restore vector on termination
  1247. SeeAlso: INT 80"BASIC",INT D0"BASIC",INT D2"BASIC"
  1248. --------r-D1---------------------------------
  1249. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1250. --------r-D2---------------------------------
  1251. INT D2 - IBM ROM BASIC - used while in interpreter
  1252. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1253.     BASIC.COM/BASICA.COM do not restore vector on termination
  1254. SeeAlso: INT 80"BASIC",INT D1"BASIC",INT D3"BASIC"
  1255. --------r-D2---------------------------------
  1256. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1257. --------r-D3---------------------------------
  1258. INT D3 - IBM ROM BASIC - used while in interpreter
  1259. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1260.     BASIC.COM/BASICA.COM do not restore vector on termination
  1261. SeeAlso: INT 80"BASIC",INT D2"BASIC",INT D4"BASIC"
  1262. --------r-D3---------------------------------
  1263. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1264. --------v-D3---------------------------------
  1265. INT D3 - VIRUS - "Antiexe" - RELOCATED INT 13
  1266. SeeAlso: INT 9F"VIRUS"
  1267. --------r-D4---------------------------------
  1268. INT D4 - IBM ROM BASIC - used while in interpreter
  1269. Notes:    called by ROM BASIC
  1270.     BASIC.COM/BASICA.COM do not restore vector on termination
  1271. SeeAlso: INT 80"BASIC",INT D3"BASIC",INT D5"BASIC"
  1272. --------r-D4---------------------------------
  1273. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1274. --------O-D400-------------------------------
  1275. INT D4 O - PC-MOS/386 v5.01 - OBSOLETE FUNCTIONS
  1276.     AH = 00h and 01h
  1277. Return: nothing
  1278. Desc:    PC-MOS/386 v5.01 reports that these functions are no longer supported
  1279.       and enters an endless loop
  1280. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1281.       system by The Software Link, Inc.
  1282. --------O-D402-------------------------------
  1283. INT D4 - PC-MOS/386 v3.0+ - GET SYSTEM CONTROL BLOCK POINTER
  1284.     AH = 02h
  1285. Return: AX = 0000h
  1286.     ES:BX -> System Control Block in V86 mode (see #04004)
  1287.     ES:EBX -> System Control Block in native mode (see #04004)
  1288. Note:    superseded by AH=26h
  1289. SeeAlso: AH=04h,AH=10h,AH=26h,AH=28h,AH=29h,AH=2Ah,INT 21/AX=3000h,INT 38
  1290.  
  1291. Format of PC-MOS/386 System Control Block:
  1292. Offset    Size    Description    (Table 04004)
  1293.  00h    WORD    pointer to first TCB in chain
  1294.  02h 17 BYTEs    reserved
  1295.  13h    WORD    pointer to current task's TCB
  1296.  15h    WORD    pointer to TCB of visible (console) task
  1297. --------O-D403-------------------------------
  1298. INT D4 - PC-MOS/386 v5.01 - GET/SET EXTENDED DIRECTORY INFORMATION
  1299.     AH = 03h
  1300.     AL = subfunction (00h get, 01h set)
  1301.     DS:(E)DX -> pathname
  1302.     ES:(E)BX -> 10-byte buffer for directory information (see #04005)
  1303. Return: CF clear if successful
  1304.         AL = permitted access level for file (00h-03h)
  1305.         ES:(E)BX -> modified buffer (AL=01h on entry)
  1306.     CF set on error
  1307.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1308. Notes:    BX/DX are used in V86 mode, EBX/EDX in native mode
  1309.     the file class cannot be changed for files because it affects the
  1310.       encryption method, but directories can have their classes changed
  1311.  
  1312. Format of PC-MOS/386 directory information:
  1313. Offset    Size    Description    (Table 04005)
  1314.  00h    BYTE    reserved (0)
  1315.  01h    BYTE    file class ('A'-'Z' or 00h)
  1316.  02h    DWORD    user ID of file creator
  1317.  06h    WORD    file creation time (see #01665 at INT 21/AX=5700h)
  1318.  08h    WORD    file creation date (see #01666 at INT 21/AX=5700h)
  1319. --------O-D404-------------------------------
  1320. INT D4 - PC-MOS/386 v3.0+ - GET TASK CONTROL BLOCK
  1321.     AH = 04h
  1322.     BX = task ID or FFFFh for calling task
  1323. Return: CF clear if successful
  1324.         ES = segment of Task Control Block (TCB) (see #04006)
  1325.     CF set on error
  1326.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1327. Note:    superseded by AH=27h
  1328. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah,INT 38
  1329.  
  1330. Format of PC-MOS/386 Task Control Block:
  1331. Offset    Size    Description    (Table 04006)
  1332.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1333.  01h    BYTE    header block ID, "T" = TCB
  1334.  02h    WORD    length of block in paragraphs
  1335.  04h    WORD    segment address of next header block (0000h if last)
  1336.  06h    WORD    segment address of previous header block (0000h if first)
  1337.  08h    WORD    pointer to next TCB
  1338.  0Ah    WORD    pointer to previous TCB
  1339.  0Ch    WORD    pointer to associated TCB (if applicable)
  1340.  0Eh    WORD    reserved
  1341. ---TCB---
  1342.  10h    WORD    TCB task ID
  1343.  12h    WORD    native context save area
  1344.  14h    WORD    start address of task
  1345.  16h    WORD    end address of task
  1346.  18h    BYTE    task priority
  1347.  19h    BYTE    task time slice
  1348.  1Ah    BYTE    "TCBWAIT" run status of task
  1349.  1Bh    BYTE    "TCBSTAT" what the task is waiting for
  1350.  1Ch    DWORD    address of polling routine
  1351.  20h    BYTE    error code from last function call
  1352.  21h 11 BYTEs    name of currently executing task
  1353.  2Ch  4 BYTEs    ???
  1354.  30h    BYTE    keyboard disabled if bit 1 set
  1355.  31h    BYTE    current shift state and toggles
  1356.  32h  2 BYTEs    ???
  1357.  34h    BYTE    current video mode
  1358.  35h    BYTE    current video page
  1359.  36h    BYTE    number of text columns per screen
  1360.  37h    BYTE    number of text rows per screen
  1361.  38h    WORD    length of video buffer
  1362.  3Ah    WORD    video page length
  1363.  3Ch    WORD    apge start address in video RAM
  1364.  3Eh  4 WORDs    current cursor positions for four screen pages
  1365.  46h  8 BYTEs    ???
  1366.  4Eh    WORD    current cursor type
  1367.  50h    BYTE    current palette setting
  1368.  51h    BYTE    original video mode
  1369.  52h    BYTE    start CRT row (00h or 01h)
  1370.  53h    BYTE    video RAM in task active
  1371.  54h    WORD    handle of video save area
  1372.  56h    WORD    page count of video save area
  1373.  58h    WORD    segment address of video save area
  1374.  5Ah    WORD    poitner to first Task File Block (see #04009)
  1375.  5Ch    WORD    pointer to first Current Directory Block (see #04012)
  1376.  5Eh    WORD    pointer to active Current Directory Block (see #04012)
  1377.  60h    BYTE    number of drives
  1378.  61h    BYTE    current drive (0=A:, etc.)
  1379.  62h    DWORD    disk transfer address
  1380.  66h  4 BYTEs    ???
  1381.  6Ah    BYTE    verify flag (nonzero = on)
  1382.  6Bh    BYTE    break flag (nonzero = on)
  1383.  6Ch    WORD    share/lock retry count
  1384.  6Eh    WORD    ticks between share/lock retries
  1385.  70h    BYTE    remote printer flags (see #04007)
  1386.  71h    BYTE    ETX/ACK delay count
  1387.  72h    WORD    spooler segment address
  1388.  74h  2 BYTEs    ???
  1389.  76h  3 BYTEs    remote printer redirection for LPT1 through LPT3 (see #04008)
  1390.  79h  2 BYTEs    ???
  1391.  7Bh    DWORD    offset of username in TCB
  1392.  7Fh    BYTE    current output class
  1393.  80h  7 BYTEs    protection access rights, 2 bits per class (writeable!)
  1394.  87h 122 BYTEs    ???
  1395. 101h    BYTE    TCB sleep downcounter value
  1396. 102h 20 BYTEs    ???
  1397. 116h    BYTE    last scan code
  1398.     ...
  1399. 5D0h    DWORD    far pointer to Device Driver Terminal's entry point
  1400. 5D4h    WORD    offset of logical screen
  1401. 5D6h    WORD    segment of logical screen
  1402. 5D8h    WORD    cursor offset within page
  1403. 5DAh    BYTE    screen columns
  1404. 5DBh    WORD    async port number (0000h = none)
  1405. 5DDh    DWORD    physical baudrate
  1406. 5E1h 19 BYTEs    reserved for Device Driver Terminal (DDT)
  1407.     ...
  1408. 7A6h    DWORD    far pointer to unregister calling chain
  1409.  
  1410. Bitfields for PC-MOS/386 remote printer flags:
  1411. Bit(s)    Description    (Table 04007)
  1412.  0    LPT1 to terminal
  1413.  1    LPT2 to terminal
  1414.  2    LPT3 to terminal
  1415.  3    escape to printer pending
  1416.  4    use XON/XOFF
  1417.  5    use ETX/ACK
  1418.  6    waiting for ACK or XON
  1419.  7    transparent printing on
  1420.  
  1421. (Table 04008)
  1422. Values for PC-MOS/386 remote printer redirection:
  1423.  00h    not redirected
  1424.  01h    redirected to COM1
  1425.  ...
  1426.  18h    redirected to COM24
  1427.  51h    redirected to LPT1
  1428.  52h    redirected to LPT2
  1429.  53h    redirected to LPT3
  1430.  
  1431. Format of PC-MOS/386 Task File Block:
  1432. Offset    Size    Description    (Table 04009)
  1433.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1434.  01h    BYTE    header block ID, "F" = task file block
  1435.  02h    WORD    length of block in paragraphs
  1436.  04h    WORD    segment address of next header block (0000h if last)
  1437.  06h    WORD    segment address of previous header block (0000h if first)
  1438.  08h    WORD    pointer to next TCB
  1439.  0Ah    WORD    pointer to previous TCB
  1440.  0Ch    WORD    pointer to associated TCB (if applicable)
  1441.  0Eh    WORD    reserved
  1442. ---TFB---
  1443.  10h    WORD    segment address of next TFB
  1444.  12h    WORD    segment address of previous TFB
  1445.  14h    WORD    segment address of TFB's Global File Block (see #04011)
  1446.  16h    WORD    segment address of owner's PSP
  1447.  18h    WORD    file handle
  1448.  1Ah  3 BYTEs    ???
  1449.  1Dh    DWORD    file position
  1450.  21h  4 BYTEs    ???
  1451.  25h    BYTE    IOCTL flags (see #04010)
  1452.  26h  2 BYTEs    ???
  1453.  
  1454. Bitfields for PC-MOS/386 IOCTL flags:
  1455. Bit(s)    Description    (Table 04010)
  1456.  0    stdin
  1457.  1    stdout
  1458.  2    null device
  1459.  3    clock device
  1460.  4    reserved
  1461.  5    ASCII mode instead of binary
  1462.  6    EOF encountered on input
  1463.  7    device rather than file
  1464.  
  1465. Format of PC-MOS/386 Global File Block:
  1466. Offset    Size    Description    (Table 04011)
  1467.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1468.  01h    BYTE    header block ID, "G" = global file block
  1469.  02h    WORD    length of block in paragraphs
  1470.  04h    WORD    segment address of next header block (0000h if last)
  1471.  06h    WORD    segment address of previous header block (0000h if first)
  1472.  08h    WORD    pointer to next TCB
  1473.  0Ah    WORD    pointer to previous TCB
  1474.  0Ch    WORD    pointer to associated TCB (if applicable)
  1475.  0Eh    WORD    reserved
  1476. ---GFB---
  1477.  10h 10 BYTEs    ???
  1478.  1Ah    WORD    file attribute
  1479.  1Ch    BYTE    ???
  1480.  1Dh    DWORD    address of device driver
  1481.  21h    WORD    first cluster
  1482.  23h    WORD    time of last modification
  1483.  25h    WORD    date of last modification
  1484.  27h    DWORD    size of file in bytes
  1485.  2Bh 11 BYTEs    ???
  1486.  36h 11 BYTEs    device name or FCB-format filename
  1487.  41h    WORD    segment address of TFB list
  1488.  43h    WORD    segment address of first RLB (see #04014) (0000h = none)
  1489.  45h    BYTE    flag: nonzero if GFB refers to character device
  1490.  46h    WORD    address of Block Device Block (see #04013)
  1491.  48h    WORD    sector of file's directory entry (see #01352)
  1492.  4Ah    WORD    high word of file's directory entry
  1493.  4Ch    WORD    ofsset of directory entry within sector
  1494.  
  1495. Format of PC-MOS/386 Current Directory Block:
  1496. Offset    Size    Description    (Table 04012)
  1497.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1498.  01h    BYTE    header block ID, "C" = current directory block
  1499.  02h    WORD    length of block in paragraphs
  1500.  04h    WORD    segment address of next header block (0000h if last)
  1501.  06h    WORD    segment address of previous header block (0000h if first)
  1502.  08h    WORD    pointer to next TCB
  1503.  0Ah    WORD    pointer to previous TCB
  1504.  0Ch    WORD    pointer to associated TCB (if applicable)
  1505.  0Eh    WORD    reserved
  1506. ---CDB---
  1507.  10h    BYTE    drive number
  1508.  11h    BYTE    ???
  1509.  12h 64 BYTEs    directory name
  1510.  52h    WORD    first directory cluster (0000h = root)
  1511.  
  1512. Format of PC-MOS/386 Block Device Block:
  1513. Offset    Size    Description    (Table 04013)
  1514.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1515.  01h    BYTE    header block ID, "B" = block device block
  1516.  02h    WORD    length of block in paragraphs
  1517.  04h    WORD    segment address of next header block (0000h if last)
  1518.  06h    WORD    segment address of previous header block (0000h if first)
  1519.  08h    WORD    pointer to next TCB
  1520.  0Ah    WORD    pointer to previous TCB
  1521.  0Ch    WORD    pointer to associated TCB (if applicable)
  1522.  0Eh    WORD    reserved
  1523. ---BDB---
  1524.  10h    BYTE    logical drive
  1525.  11h    BYTE    unit passed to driver
  1526.  12h    WORD    sector size
  1527.  14h    BYTE    cluster mask
  1528.  15h    BYTE    cluster shift count
  1529.  16h    WORD    starting sector of first FAT
  1530.  18h    BYTE    number of FATs
  1531.  19h    WORD    number of root directories
  1532.  1Bh    WORD    sector number of first data sector (cluster 0002h)
  1533.  1Dh    WORD    number of clusters + 1 (number of highest data cluster)
  1534.  1Fh    BYTE    number of sectors in FAT
  1535.  20h    WORD    beginning root directory sector number
  1536.  22h    DWORD    device driver address
  1537.  26h    BYTE    media descriptor byte
  1538.  27h  5 BYTEs    ???
  1539.  2Ch    BYTE    flag: volume > 32MB
  1540.  2Dh    BYTE    ???
  1541.  2Eh    BYTE    number of sectors per cluster
  1542.  2Fh    WORD    number of clusters on device
  1543.  31h    WORD    number of free clusters (FFFFh = unknown)
  1544.  33h    WORD    root directory cluster number
  1545.  35h    WORD    pointer to alias/subst string
  1546.  37h    WORD    TCB segment address of owner (0000h = none)
  1547.  
  1548. Format of PC-MOS/386 Record Lock Block:
  1549. Offset    Size    Description    (Table 04014)
  1550.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1551.  01h    BYTE    header block ID, "R" = record lock block
  1552.  02h    WORD    length of block in paragraphs
  1553.  04h    WORD    segment address of next header block (0000h if last)
  1554.  06h    WORD    segment address of previous header block (0000h if first)
  1555.  08h    WORD    pointer to next TCB
  1556.  0Ah    WORD    pointer to previous TCB
  1557.  0Ch    WORD    pointer to associated TCB (if applicable)
  1558.  0Eh    WORD    reserved
  1559. ---RLB---
  1560.  10h    WORD    segment address of owner's PSP
  1561.  12h    WORD    segment address of Global File Block (see #04011)
  1562.  14h    WORD    segment address of owner's Task File Block (see #04009)
  1563.  16h    DWORD    file offset of locked region start
  1564.  1Ah    DWORD    length of locked region
  1565.  1Eh    WORD    owner's handle for file
  1566. --------O-D407-------------------------------
  1567. INT D4 - PC-MOS/386 v3.0+ - WAIT FOR EVENT
  1568.     AH = 07h
  1569.     AL = events to monitor (see #04015)
  1570.     BX = number of timer ticks until timeout if AL bit 1 set
  1571.     CX = bitmap of IRQs to monitor if AL bit 2 set
  1572.         (bit 0 = IRQ0 .. bit 15 = IRQ15)
  1573.     DX = port to monitor if AL bit 3 set
  1574. Return: CF clear if successful
  1575.         AL = type of event which woke up task (see #04015)
  1576.         CX = IRQ (if any) which awakened task
  1577.         DX = port (if any) which awakened task
  1578.     CF set on error
  1579.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1580. Note:    a device driver may make this call with AL=00h, which indicates that
  1581.       the driver is responsible for setting and clearing the TCBWAIT field
  1582.       in the TCB.  To put task to sleep, set TCBWAIT bits 2-0 to 001; to
  1583.       reawaken it, set bit 1 (leaving other bits unchanged)
  1584. SeeAlso: AH=04h,INT 16/AH=00h,INT 38
  1585.  
  1586. Bitfields for PC-MOS/386 events to monitor:
  1587. Bit(s)    Description    (Table 04015)
  1588.  0    keystroke
  1589.  1    timeout
  1590.  2    IRQ
  1591.  3    port access
  1592.  7    return status of user poll routine (other ignored if set)
  1593. --------O-D410-------------------------------
  1594. INT D4 - PC-MOS/386 v3.0+ - ENTER/LEAVE NATIVE 386 EXECUTION MODE
  1595.     AH = 10h
  1596.     AL = direction (00h return to V86 mode, 01h enter native mode)
  1597.     CX = length in bytes of Native Context Area ( >=1024 )
  1598.     DX = segment of Native Context Area
  1599. Return: CF clear if successful
  1600.         running in desired mode at instruction following INT D4 call
  1601.         all segment registers converted to appropriate selectors/segments
  1602.     CF set on error
  1603.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1604. Note:    MS-DOS calls are available in protected mode
  1605. SeeAlso: AH=11h,AH=12h,AH=13h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT 38
  1606. --------O-D411-------------------------------
  1607. INT D4 - PC-MOS/386 v3.0+ - ALLOCATE NATIVE MODE MEMORY BLOCK
  1608.     AH = 11h
  1609.     EBX = block length in bytes
  1610. Return: CF clear if successful
  1611.         EBX = number of bytes actually allocated
  1612.         ES = selector for allocated block
  1613.     CF set on error
  1614.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1615. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1616.       system by The Software Link, Inc.
  1617. Note:    the memory must be released before the program terminates
  1618. SeeAlso: AH=10h,AH=12h,INT 38
  1619. --------O-D412-------------------------------
  1620. INT D4 - PC-MOS/386 v3.0+ - FREE NATIVE MODE MEMORY BLOCK
  1621.     AH = 12h
  1622.     ES = selector for block to free
  1623. Return: CF clear if successful
  1624.     CF set on error
  1625.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1626. SeeAlso: AH=10h,AH=11h,AH=13h,INT 38
  1627. --------O-D413-------------------------------
  1628. INT D4 - PC-MOS/386 v5.01 - GET ALIAS FOR SELECTOR (NATIVE MODE ONLY)
  1629.     AH = 13h
  1630.     AL = type of alias selector (00h data, 01h stack, 02h code)
  1631.     BX = selector
  1632. Return: CF clear if successful
  1633.         AX = new selector or 0000h if BX selector not found
  1634.     CF set on error
  1635.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1636. SeeAlso: AH=11h,AH=12h
  1637. --------O-D416-------------------------------
  1638. INT D4 - PC-MOS/386 v5.01 - SET/CLEAR IRQ RESERVATION
  1639.     AH = 16h
  1640.     AL = function (00h clear, 01h set reservation)
  1641.     CX = IRQ number
  1642. Return: AX = status
  1643.         (0000h successful, 0001h currently reserved by another task)
  1644. SeeAlso: AH=07h,INT 14/AH=11h"PC-MOS"
  1645. --------O-D419-------------------------------
  1646. INT D4 - PC-MOS/386 v5.01 - GET TASK ID
  1647.     AH = 19h
  1648. Return: BX = caller's task ID
  1649. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1650.       system by The Software Link, Inc.
  1651. SeeAlso: AH=1Dh,AH=1Eh
  1652. --------O-D41A-------------------------------
  1653. INT D4 - PC-MOS/386 v5.01 - GET/SET TASK PRIORITY
  1654.     AH = 1Ah
  1655.     AL = subfunction (00h read, 01h set, 02h get and set)
  1656.     BX = task ID (FFFFh for current task)
  1657.     CL = new priority value
  1658. Return: CF clear if successful
  1659.         CL = current priority value
  1660.     CF set on error
  1661.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1662. SeeAlso: AH=1Bh,AH=1Ch
  1663. --------O-D41B-------------------------------
  1664. INT D4 - PC-MOS/386 v5.01 - GET/SET TIME SLICE
  1665.     AH = 1Bh
  1666.     AL = subfunction (00h read, 01h set, 02h get and set)
  1667.     BX = task ID (FFFFh for current task) (see AH=19h)
  1668.     CL = new time slice value
  1669. Return: CF clear if successful
  1670.         CL = current time slice value
  1671.     CF set on error
  1672.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1673. SeeAlso: AH=1Ah,AH=1Ch
  1674. --------O-D41C-------------------------------
  1675. INT D4 - PC-MOS/386 v5.01 - GET/SET KEYBOARD MODE
  1676.     AH = 1Ch
  1677.     AL = subfunction (00h enable, 01h disable, 02h get mode)
  1678.     BX = task ID (FFFFh for current task)
  1679. Return: CF clear if successful
  1680.         CL = current keyboard state
  1681.     CF set on error
  1682.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1683. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1684.       system by The Software Link, Inc.
  1685. SeeAlso: AH=1Ah,AH=1Bh
  1686. --------O-D41D-------------------------------
  1687. INT D4 - PC-MOS/386 v5.01 - GET CURRENT PROGRAM NAME
  1688.     AH = 1Dh
  1689.     BX = task ID (FFFFh for current task) (see AH=19h)
  1690.     ES:DI -> buffer for program name (see #04016)
  1691. Return: CF clear if successful
  1692.         ES:DI buffer filled
  1693.     CF set on error
  1694.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1695. SeeAlso: AH=19h,AH=1Eh
  1696.  
  1697. Format of PC-MOS/386 program name buffer:
  1698. Offset    Size    Description    (Table 04016)
  1699.  00h  8 BYTEs    filename
  1700.  08h  3 BYTEs    extension
  1701. --------O-D41E-------------------------------
  1702. INT D4 - PC-MOS/386 v5.01 - GET CURRENT USERNAME AND SECURITY CLASS
  1703.     AH = 1Eh
  1704.     BX = task ID (FFFFh for current task)
  1705.     ES:DI -> 4-byte buffer for username
  1706. Return: CF clear if successful
  1707.         CL = security class
  1708.         20h (' ') none
  1709.         41h-5Ah ('A'-'Z') security level
  1710.         ES:DI buffer filled
  1711.     CF set on error
  1712.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1713. SeeAlso: AH=19h,AH=1Dh
  1714. --------O-D41F-------------------------------
  1715. INT D4 - PC-MOS/386 v5.01 - GET TASK PARTITION INFORMATION
  1716.     AH = 1Fh
  1717.     BX = task ID (FFFFh for current task) (see AH=19h)
  1718. Return: CF clear if successful
  1719.         CX = start segment of task
  1720.         DX = ending segment of task
  1721.     CF set on error
  1722.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1723. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1724.       system by The Software Link, Inc.
  1725. SeeAlso: AH=2Dh
  1726. --------O-D420-------------------------------
  1727. INT D4 - PC-MOS/386 v5.01 - GET PORT AND BAUDRATE INFORMATION
  1728.     AH = 20h
  1729.     BX = task ID (FFFFh for current task) (see AH=19h)
  1730. Return: CF clear if successful
  1731.         CX = port number (0000h if none)
  1732.         DI:SI = baudrate (if CX nonzero)
  1733.     CF set on error
  1734.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1735. SeeAlso: INT 14/AH=0Ch"FOSSIL"
  1736. --------O-D421-------------------------------
  1737. INT D4 - PC-MOS/386 v5.01 - REMOVE A TASK
  1738.     AH = 21h
  1739.     BX = task ID (FFFFh for current task) (see AH=19h)
  1740. Return: CF clear if successful
  1741.         AX = ASCII percentage of System Memory Pool used
  1742.         (AH = tens digit, AL = ones digit)
  1743.         DS,SI destroyed
  1744.     CF set on error
  1745.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1746. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1747.       system by The Software Link, Inc.
  1748. SeeAlso: AH=22h
  1749. --------O-D422-------------------------------
  1750. INT D4 - PC-MOS/386 v5.01 - ADD A TASK TO THE SYSTEM
  1751.     AH = 22h
  1752.     DS:SI -> addtask data structure (see #04018)
  1753. Return: CF clear if successful
  1754.         ES = segment address of the new task's TCB data structure
  1755.     CF set on error
  1756.         AX = error code (see #04017)
  1757. SeeAlso: AH=21h
  1758.  
  1759. (Table 04017)
  1760. Values for PC-MOS/386 error code:
  1761.  08h    insufficient memory
  1762.  0Bh    invalid addtask structure format
  1763.  12h    insufficient available space in system memory pool
  1764.  1Fh    general failure
  1765.  55h    already allocated
  1766.  57h    if task already in use or invalid parameter
  1767.  
  1768. Format of PC-MOS/386 addtask data structure:
  1769. Offset    Size    Description    (Table 04018)
  1770.  00h    WORD    task size in KB (min 16KB)
  1771.  02h    WORD    task ID (0000h for automatic selection)
  1772.  04h    BYTE    task class (' ' or 'A'-'Z')
  1773.  05h    DWORD    -> ASCIZ name of task startup batchfile
  1774.  09h    DWORD    -> task's terminal driver (0000000h = background task)
  1775.  0Dh    WORD    task port
  1776.  0Fh    DWORD    task baud rate
  1777.  13h    DWORD    (ret) total extended memory
  1778.  17h    DWORD    (ret) number of 4K extended memory pages allocated
  1779.  1Bh    WORD    (ret) paragraphs of system memory pool allocated
  1780.  1Dh    WORD    (ret) system memory pool size in paragraphs
  1781.  1Fh    WORD    (ret) ASCII task percentage of system memory pool
  1782.  21h  3 BYTEs    reserved
  1783. --------O-D423-------------------------------
  1784. INT D4 - PC-MOS/386 v5.01 - CHANGE TERMINAL DRIVER
  1785.     AH = 23h
  1786.     BX = task ID (FFFFh for current task)
  1787.     DS:SI -> entry point of the new Device Driver Terminal
  1788. Return: CF clear if successful
  1789.     CF set on error
  1790.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1791. --------O-D424-------------------------------
  1792. INT D4 U - PC-MOS/386 v5.01 - GET OPERATING SYSTEM SERIAL NUMBER
  1793.     AH = 24h
  1794. Return: DS:DX -> '$'-terminated string containing the serial number
  1795. --------O-D425-------------------------------
  1796. INT D4 - PC-MOS/386 v5.01 - IDENTIFY LOAD ADDRESS OF DEVICE DRIVER LOCATION
  1797.     AH = 25h
  1798.     DX = driver's CS value
  1799. Return: AX = segment address of driver in system memory pool
  1800.         (0000h if the driver is not within the system memory pool)
  1801. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1802.       system by The Software Link, Inc.
  1803. --------O-D426-------------------------------
  1804. INT D4 - PC-MOS/386 v5.01 - GET SYSTEM CONTROL BLOCK SEGMENT/SELECTOR
  1805.     AH = 26h
  1806. Return: DX = segment/selector of the System Control Block (see #04004)
  1807. Note:    this function supersedes AH=02h
  1808. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah
  1809. --------O-D427-------------------------------
  1810. INT D4 - PC-MOS/386 v5.01 - GET TASK CONTROL BLOCK SEGMENT/SELECTOR
  1811.     AH = 27h
  1812.     BX = task ID (FFFFh if current task) (see AH=19h)
  1813. Return: CF clear if successful
  1814.         DX = segment/selector for the Task Control Block (see #04006)
  1815.     CF set on error
  1816.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1817. Note:    this function supersedes AH=04h
  1818. SeeAlso: AH=26h,AH=28h,AH=29h,AH=2Ah
  1819. --------O-D428-------------------------------
  1820. INT D4 - PC-MOS/386 v5.01 - GET CONTROL BLOCK DATA FROM SCB OR TCB
  1821.     AH = 28h
  1822.     BX = offset into control block at which to start reading
  1823.     CX = number of bytes to read
  1824.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  1825.     ES:DI -> buffer for data
  1826. Return: CF clear if successful
  1827.     CF set on error
  1828.         AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h)
  1829.         05h access denied due to an invalid segment/selector
  1830. SeeAlso: AH=26h,AH=27h,AH=29h,AH=2Ah
  1831. --------O-D429-------------------------------
  1832. INT D4 - PC-MOS/386 v5.01 - WRITE CONTROL BLOCK DATA INTO SCB OR TCB
  1833.     AH = 29h
  1834.     BX = offset into control block at which to start writing
  1835.     CX = number of bytes to write
  1836.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  1837.     DS:SI -> buffer containing data to be written
  1838. Return: CF clear if successful
  1839.     CF set on errro
  1840.         AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h)
  1841.         05h access denied due to an invalid segment/selector
  1842. Note:     this function performs no bounds checking
  1843. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1844.       system by The Software Link, Inc.
  1845. SeeAlso: AH=26h,AH=27h,AH=28h,AH=2Ah
  1846. --------O-D42A-------------------------------
  1847. INT D4 - PC-MOS/386 v5.01 - SWAP CONTROL BLOCK DATA OF SCB OR TCB
  1848.     AH = 2Ah
  1849.     BX = offset into control block at which to start swap
  1850.     CX = number of bytes to swap
  1851.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  1852.     DS:SI -> buffer containing new data and to receive current data
  1853. Return: CF clear if successful
  1854.     CF set on error
  1855.         AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h)
  1856.         05h access denied due to an invalid segment/selector
  1857. Note:    the interrupts are disabled during the swap to prevent corruption
  1858. SeeAlso: AH=26h,AH=27h,AH=28h,AH=29h
  1859. --------O-D42C-------------------------------
  1860. INT D4 - PC-MOS/386 v5.01 - GET/SET SPOOLER PARAMETERS
  1861.     AH = 2Ch
  1862.     AL = function
  1863.         00h set spooler timeout
  1864.         CX = timout value in seconds
  1865.         01h get spooler timeout
  1866.         Return: CX = current timeout in seconds
  1867.         02h get spooler parameters
  1868.         Return: CH = priority (00h-09h)
  1869.             CL = disposition (d, h, i, n, s)
  1870.             SI = class (a - z)
  1871.         03h set spooler parameters
  1872.         CH = priority (00h-09h)
  1873.         CL = disposition (d, h, i, n, s)
  1874.         SI = class (a - z)
  1875.         BX = task ID (FFFFh for current task)
  1876.         DX = LPT number
  1877. Return: CF clear if successful
  1878.     CF set on error
  1879.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1880. SeeAlso: AH=00h,AH=02h,AH=03h
  1881. --------O-D42D-------------------------------
  1882. INT D4 - PC-MOS/386 v5.01 - GET MAXIMUM TASK SIZE
  1883.     AH = 2Dh
  1884. Return: DX = maximum task size in paragraphs
  1885.     BX = start address of task space
  1886. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1887.       system by The Software Link, Inc.
  1888. SeeAlso: AH=1Fh,AH=22h
  1889. --------r-D5---------------------------------
  1890. INT D5 - IBM ROM BASIC - used while in interpreter
  1891. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1892.     BASIC.COM/BASICA.COM do not restore vector on termination
  1893. SeeAlso: INT 80"BASIC",INT D4"BASIC",INT D6"BASIC"
  1894. --------r-D5---------------------------------
  1895. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1896. --------r-D6---------------------------------
  1897. INT D6 - IBM ROM BASIC - used while in interpreter
  1898. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1899.     BASIC.COM/BASICA.COM do not restore vector on termination
  1900. SeeAlso: INT 80"BASIC",INT D5"BASIC",INT D7"BASIC"
  1901. --------r-D6---------------------------------
  1902. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1903. --------r-D7---------------------------------
  1904. INT D7 - IBM ROM BASIC - used while in interpreter
  1905. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1906.     BASIC.COM/BASICA.COM do not restore vector on termination
  1907. SeeAlso: INT 80"BASIC",INT D6"BASIC",INT D8"BASIC"
  1908. --------r-D7---------------------------------
  1909. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1910. --------r-D8---------------------------------
  1911. INT D8 - IBM ROM BASIC - used while in interpreter
  1912. Notes:    called by ROM BASIC
  1913.     BASIC.COM/BASICA.COM do not restore vector on termination
  1914. SeeAlso: INT 80"BASIC",INT D7"BASIC",INT D9"BASIC"
  1915. --------r-D8---------------------------------
  1916. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1917. --------H-D8---------------------------------
  1918. INT D8 - Screen Thief v1.00 - RELOCATED IRQ0
  1919. Range:    INT 78h to INT E0h, selected by commandline switch
  1920. Note:    Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default,
  1921.       but may be directed via a commandline switch to use any range
  1922.       starting at a multiple of 8 between 78h and E0h
  1923. SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview"
  1924. SeeAlso: INT D9"Screen Thief"
  1925. --------r-D9---------------------------------
  1926. INT D9 - IBM ROM BASIC - used while in interpreter
  1927. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1928.     BASIC.COM/BASICA.COM do not restore vector on termination
  1929. SeeAlso: INT 80"BASIC",INT D8"BASIC",INT DA"BASIC"
  1930. --------r-D9---------------------------------
  1931. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1932. --------H-D9---------------------------------
  1933. INT D9 - Screen Thief v1.00 - RELOCATED IRQ1
  1934. Range:    INT 79h to INT E1h, selected by commandline switch
  1935. Note:    (see INT D8"Screen Thief")
  1936. SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief"
  1937. --------r-DA---------------------------------
  1938. INT DA - IBM ROM BASIC - used while in interpreter
  1939. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1940.     BASIC.COM/BASICA.COM do not restore vector on termination
  1941. SeeAlso: INT 80"BASIC",INT D9"BASIC",INT DB"BASIC"
  1942. --------r-DA---------------------------------
  1943. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1944. --------H-DA---------------------------------
  1945. INT DA - Screen Thief v1.00 - RELOCATED IRQ2
  1946. Range:    INT 7Ah to INT E2h, selected by commandline switch
  1947. Note:    (see INT D8"Screen Thief")
  1948. SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief"
  1949. --------r-DB---------------------------------
  1950. INT DB - IBM ROM BASIC - used while in interpreter
  1951. Notes:    called by ROM BASIC
  1952.     BASIC.COM/BASICA.COM do not restore vector on termination
  1953. SeeAlso: INT 80"BASIC",INT DA"BASIC",INT DC"BASIC"
  1954. --------r-DB---------------------------------
  1955. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1956. --------H-DB---------------------------------
  1957. INT DB - Screen Thief v1.00 - RELOCATED IRQ3
  1958. Range:    INT 7Bh to INT E3h, selected by commandline switch
  1959. Note:    (see INT D8"Screen Thief")
  1960. SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief"
  1961. --------u-DC---------------------------------
  1962. INT DC - PC/370 v4.1- - API
  1963. SeeAlso: INT 60"PC/370"
  1964. --------r-DC---------------------------------
  1965. INT DC - IBM ROM BASIC - used while in interpreter
  1966. Notes:    called by ROM BASIC
  1967.     BASIC.COM/BASICA.COM do not restore vector on termination
  1968. SeeAlso: INT 80"BASIC",INT DB"BASIC",INT DD"BASIC"
  1969. --------r-DC---------------------------------
  1970. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1971. --------H-DC---------------------------------
  1972. INT DC - Screen Thief v1.00 - RELOCATED IRQ4
  1973. Range:    INT 7Ch to INT E4h, selected by commandline switch
  1974. Note:    (see INT D8"Screen Thief")
  1975. SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief"
  1976. --------r-DD---------------------------------
  1977. INT DD - IBM ROM BASIC - used while in interpreter
  1978. Notes:    called by ROM BASIC
  1979.     BASIC.COM/BASICA.COM do not restore vector on termination
  1980. SeeAlso: INT 80"BASIC",INT DC"BASIC",INT DE"BASIC"
  1981. --------r-DD---------------------------------
  1982. INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
  1983.     BX = where to place keystrokes
  1984.         FFFFh insert before current buffer contents
  1985.         0000h replace current contents
  1986.         0001h insert after current contents
  1987.     CX = number of keystroke events to insert
  1988.     ES:SI -> data to be placed into buffer (list of WORD key codes)
  1989.         4000h + N = normal ASCII keystroke N (N = 00h to FFh)
  1990.         4100h + N = extended ASCII keystroke N (N = 03h to 84h)
  1991. Return: nothing
  1992. SeeAlso: INT 16/AH=05h
  1993. --------H-DD---------------------------------
  1994. INT DD - Screen Thief v1.00 - RELOCATED IRQ5
  1995. Range:    INT 7Dh to INT E5h, selected by commandline switch
  1996. Note:    (see INT D8"Screen Thief")
  1997. SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief"
  1998. --------r-DE---------------------------------
  1999. INT DE - IBM ROM BASIC - used while in interpreter
  2000. Notes:    called by ROM BASIC
  2001.     BASIC.COM/BASICA.COM do not restore vector on termination
  2002. SeeAlso: INT 80"BASIC",INT DD"BASIC",INT DF"BASIC"
  2003. --------r-DE---------------------------------
  2004. INT DE - APL*PLUS/PC - ???
  2005. Note:    appears to be the same as INT 16
  2006. --------H-DE---------------------------------
  2007. INT DE - Screen Thief v1.00 - RELOCATED IRQ6
  2008. Range:    INT 7Eh to INT E6h, selected by commandline switch
  2009. Note:    (see INT D8"Screen Thief")
  2010. SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief"
  2011. --------b-DF---------------------------------
  2012. INT DF - Victor 9000/Sirius 1 - SuperBIOS
  2013. SeeAlso: INT 21/AH=EAh"NetWare"
  2014. --------r-DF---------------------------------
  2015. INT DF - IBM ROM BASIC - used while in interpreter
  2016. Notes:    called by ROM BASIC
  2017.     BASIC.COM/BASICA.COM do not restore vector on termination
  2018. SeeAlso: INT 80"BASIC",INT DE"BASIC",INT E0"BASIC"
  2019. --------r-DF---------------------------------
  2020. INT DF - APL*PLUS/PC - SAME AS INT 10
  2021. SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh
  2022. --------H-DF---------------------------------
  2023. INT DF - Screen Thief v1.00 - RELOCATED IRQ7
  2024. Range:    INT 7Fh to INT E7h, selected by commandline switch
  2025. Note:    (see INT D8"Screen Thief")
  2026. SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief"
  2027. --------r-E0---------------------------------
  2028. INT E0 - IBM ROM BASIC - used while in interpreter
  2029. Notes:    called by ROM BASIC
  2030.     BASIC.COM/BASICA.COM do not restore vector on termination
  2031. SeeAlso: INT 80"BASIC",INT DF"BASIC",INT E1"BASIC"
  2032. --------r-E0---------------------------------
  2033. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  2034. SeeAlso: INT CF"APL"
  2035. --------v-E0---------------------------------
  2036. INT E0 - VIRUS - "Micro-128" - ???
  2037. Note:    Micro-128 also overwrites the upper half of the interrupt table
  2038. SeeAlso: INT 9E"VIRUS",INT F1"VIRUS"
  2039. ----------E0---------------------------------
  2040. INT E0 - DeskMate (Tandy) - DESK EXECUTIVE API
  2041.     AX = function code (numerous)
  2042.     parameters passed in BX, DX, ES, DI, and/or BP
  2043. Return: AX = return from function
  2044. Program: DeskMate is a proprietary GUI from Tandy distributed with several
  2045.       models of the Tandy 1000's, 2500's, 3000's, and laptops.  Retail
  2046.       and runtime versions also exist.  Some Tandy's are designed to
  2047.       boot directly into DeskMate.
  2048. SeeAlso: INT 15/AX=7002h,INT E1"DeskMate"
  2049. --------O-E0---------------------------------
  2050. INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
  2051.     CL = function number (see #04019,#04020)
  2052.     DS,DX contain parameter(s):
  2053.         DL = byte parameter
  2054.         DX = word parameter
  2055.         DS:DX -> structure
  2056. Return: as appropriate for function:
  2057.         AL = byte result
  2058.         AX = word
  2059.         ES:AX -> structure (and BX=ES)
  2060.     CX is often the error code (see #04021)
  2061. Notes:    several functions are covered in more detail in following entries
  2062.     most of these calls are also supported by Digital Research's DOS Plus
  2063.       v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
  2064.       90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
  2065. SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus",INT E6"CP/M-86"
  2066.  
  2067. (Table 04019)
  2068. Values for CP/M-86,DR Multiuser DOS function number:
  2069.  00h    terminate calling process            (see INT E0/CL=00h)
  2070.  01h    read a character                (see INT E0/CL=01h)
  2071.  02h    write character to default console        (see INT E0/CL=02h)
  2072.  03h    read character from default AUX            (see INT E0/CL=03h)
  2073.  04h    write character to default AUX            (see INT E0/CL=04h)
  2074.  05h    write character to default list device        (see INT E0/CL=05h)
  2075.  06h    perform raw I/O on default console        (see INT E0/CL=06h)
  2076.  07h    return default AUX input status            (see INT E0/CL=07h)
  2077.  08h    return default AUX output status        (see INT E0/CL=08h)
  2078.  09h    write string to default console            (see INT E0/CL=09h)
  2079.  0Ah    read string from default console        (see INT E0/CL=0Ah)
  2080.  0Bh    return default console input status        (see INT E0/CL=0Bh)
  2081.  0Ch    get BDOS release ID                (see INT E0/CL=0Ch)
  2082.  0Dh    reset all disk drives        (see also INT 21/AH=0Dh)
  2083.  0Eh    set default drive        (see also INT 21/AH=0Eh"DOS 1+")
  2084.  0Fh    open file via FCB        (see also INT 21/AH=0Fh,#01345)
  2085.  10h    close file via FCB        (see also INT 21/AH=10h)
  2086.  11h    search for first matching file with FCB (see also INT 21/AH=11h)
  2087.  12h    search for next matching file with FCB (see also INT 21/AH=12h)
  2088.  13h    delete file via FCB        (see also INT 21/AH=13h)
  2089.  14h    sequential read via FCB        (see also INT 21/AH=14h)
  2090.  15h    sequential write via FCB    (see also INT 21/AH=15h)
  2091.  16h    create file via FCB        (see also INT 21/AH=16h)
  2092.  17h    rename file via FCB        (see also INT 21/AH=17h)
  2093.  18h    get bit map of logged drives
  2094.  19h    get default drive        (see also INT 21/AH=19h)
  2095.  1Ah    set DMA address offset
  2096.  1Bh    get default disk allocation vector (see also INT 21/AH=1Bh)
  2097.  1Ch    set default drive to read-only
  2098.  1Dh    get bit map of read-only drives
  2099.  1Eh    set file attributes via FCB    (see also INT 21/AX=4301h)
  2100.  1Fh    get address of disk parameter block (see also INT 21/AH=1Fh)
  2101.  20h    get/set default user number
  2102.  21h    read random record via FCB    (see also INT 21/AH=21h)
  2103.  22h    write random record via FCB    (see also INT 21/AH=22h)
  2104.  23h    compute file size with FCB    (see also INT 21/AH=23h)
  2105.  24h    get FCB random record number    (see also INT 21/AH=24h)
  2106.  25h    reset specified drives
  2107.  26h    access specified drives (not in DR DOS Plus v2.1)
  2108.  27h    free specified drives
  2109.  28h    write random with FCB, zero fill (see also INT 21/AH=28h)
  2110.  2Ah    lock records in FCB file    (see also INT 21/AH=5Ch)
  2111.  2Bh    unlock records in FCB file    (see also INT 21/AH=5Ch)
  2112.  2Ch    set BDOS multisector count
  2113.  2Dh    set BDOS error mode
  2114.  2Eh    get free space on disk
  2115.  2Fh    load, initialize, and jump to process ("chain process")
  2116.     (see INT E0/CL=2Fh,INT 21/AH=4Bh)
  2117.  30h    flush write-deferred buffers
  2118.  31h    get/set system variable (DOS Plus v2.1)
  2119.  32h    call BIOS (XIOS) character routine (see #04020)
  2120.  33h    set DMA address segment
  2121.  34h    get DMA buffer address
  2122.  35h    CP/M-86 allocate maximum memory            (see INT E0/CL=35h)
  2123.  36h    allocate maximum memory at specified segment    (see INT E0/CL=36h)
  2124.  37h    CP/M-86 allocate memory segment (see INT E0/CL=37h,INT 21/AH=48h)
  2125.  38h    allocate memory at specified segment        (see INT E0/CL=38h)
  2126.  39h    CP/M-86 free specified memory segment (see INT E0/CL=39h,INT 21/AH=49h)
  2127.  3Ah    CP/M-86 free all memory (not in DOS Plus v2.1)    (see INT E0/CL=3Ah)
  2128.  3Bh    load .CMD file into memory            (see INT E0/CL=3Bh)
  2129.  3Ch    (DOS Plus v2.1) call RSX program
  2130.  40h    (DR-NET, REAL/32) log on a server        (see INT E0/CL=40h)
  2131.  41h    (DR-NET, REAL/32) log off a server        (see INT E0/CL=41h)
  2132.  42h    (DR-NET) send a message
  2133.  43h    (DR-NET) receive a message
  2134.  44h    (DR-NET, REAL/32) get network status        (see INT E0/CL=44h)
  2135.  45h    (DR-NET, REAL/32) get requestor config table    (see INT E0/CL=45h)
  2136.  46h    (DR-NET) set compatibility attributes
  2137.  47h    (DR-NET, REAL/32) get server configuration table (see INT E0/CL=47h)
  2138.  48h    (DR-NET, REAL/32) set network error mode    (see INT E0/CL=48h)
  2139.  49h    (DR-NET, REAL/32) attach network
  2140.  4Ah    (DR-NET, REAL/32) detach network
  2141.  4Bh    (DR-NET, REAL/32) set default password
  2142.  4Ch    (DR-NET, REAL/32) get-set long timeout
  2143.  4Dh    (DR-NET, REAL/32) get parameter table
  2144.  4Fh    (REAL/32) get extended network error
  2145.  50h    (DR-NET, REAL/32) get network information
  2146.  53h    get current time            (see also INT 21/AH=2Ch)
  2147.  54h    set current time            (see also INT 21/AH=2Dh)
  2148.  55h    get binary system date            (see also INT 21/AH=2Ah)
  2149.  56h    set system date                (see also INT 21/AH=2Bh"DATE")
  2150.  57h    allocate system flag
  2151.  58h    deallocate system flag
  2152.  59h    reserve memory in global area            (see INT E0/CL=59h)
  2153.  5Ah    lock physical drive
  2154.  5Bh    unlock physical drive
  2155.  5Ch    search path for executable file            (see INT E0/CL=5Ch)
  2156.  5Dh    load and execute command            (see INT E0/CL=5Dh)
  2157.  5Eh    get/set process exit code            (see INT E0/CL=5Eh)
  2158.  5Fh    set country information
  2159.  60h    get country information
  2160.  63h    truncate FCB file (see also INT 21/AH=28h)
  2161.  64h    create/update directory label
  2162.  65h    get directory label
  2163.  66h    get FCB date stamp and password mode
  2164.  67h    write extended FCB
  2165.  68h    set system date and time
  2166.  69h    get system date and time in binary
  2167.  6Ah    establish password for file access
  2168.  6Bh    get OS serial number                (see INT E0/CL=6Bh)
  2169.  6Ch    (DOS Plus v2.1) get/set program return code
  2170.  6Dh    get/set console mode                (see INT E0/CL=6Dh)
  2171.  6Eh    get/set string delimiter            (see INT E0/CL=6Eh)
  2172.  6Fh    write block to default console            (see INT E0/CL=6Fh)
  2173.  70h    write block to default list device        (see INT E0/CL=70h)
  2174.  71h    execute DOS-compatible function            (see INT E0/CL=71h)
  2175.  74h    set FCB time and date stamps
  2176.  80h    allocate memory                    (see INT E0/CL=80h)
  2177.  82h    deallocate memory                (see INT E0/CL=81h)
  2178.  83h    poll I/O device
  2179.  84h    wait on system flag                (see INT E0/CL=84h)
  2180.  85h    set system flag                    (see INT E0/CL=85h)
  2181.  86h    create message queue                (see INT E0/CL=86h)
  2182.  87h    open message queue                (see INT E0/CL=87h)
  2183.  88h    delete message queue                (see INT E0/CL=88h)
  2184.  89h    read from message queue                (see INT E0/CL=89h)
  2185.  8Ah    conditionally read from message queue        (see INT E0/CL=8Ah)
  2186.  8Bh    write to message queue                (see INT E0/CL=8Bh)
  2187.  8Ch    conditionally write to message queue        (see INT E0/CL=8Ch)
  2188.  8Dh    delay calling process                (see INT E0/CL=8Dh)
  2189.  8Eh    call process dispatcher (yield CPU)        (see INT E0/CL=8Eh)
  2190.  8Fh    terminate calling process (same as func 00h)    (see INT E0/CL=8Fh)
  2191.  90h    create a process                (see INT E0/CL=90h)
  2192.  91h    set calling process' priority            (see INT E0/CL=91h)
  2193.  92h    attach to default console            (see INT E0/CL=92h)
  2194.  93h    detach from default console            (see INT E0/CL=93h)
  2195.  94h    (REAL/32) set the process' default console    (see INT E0/CL=94h)
  2196.  95h    assign default console to process        (see INT E0/CL=95h)
  2197.  96h    interpret and execute commandline        (see INT E0/CL=96h)
  2198.  97h    resident procedure library
  2199.  98h    parse ASCII string into FCB (see also INT 21/AH=29h)
  2200.  99h    return default console                (see INT E0/CL=99h)
  2201.  9Ah    get address of system data (SYSDAT)        (see INT E0/CL=9Ah)
  2202.  9Bh    get system time and date
  2203.  9Ch    return calling process' descriptor        (see INT E0/CL=9Ch)
  2204.  9Dh    terminate process by name or PD address        (see INT E0/CL=9Dh)
  2205.  9Eh    attach to default list device            (see INT E0/CL=9Eh)
  2206.  9Fh    detach from default list device            (see INT E0/CL=9Fh)
  2207.  A0h    select default list device            (see INT E0/CL=A0h)
  2208.  A1h    conditionally attach to default list device    (see INT E0/CL=A1h)
  2209.  A2h    conditionally attach to default console        (see INT E0/CL=A2h)
  2210.  A3h    get OS version number                (see INT E0/CL=A3h)
  2211.  A4h    get default list device                (see INT E0/CL=A4h)
  2212.  A5h    attach to default AUX                (see INT E0/CL=A5h)
  2213.  A6h    detach from default AUX                (see INT E0/CL=A6h)
  2214.  A7h    conditionally attach to default AUX        (see INT E0/CL=A7h)
  2215.  A8h    set default AUX                    (see INT E0/CL=A8h)
  2216.  A9h    return default AUX                (see INT E0/CL=A9h)
  2217.  ACh    read block from default AUX            (see INT E0/CL=ACh)
  2218.  ADh    (DOS Plus v2.1) write block to default AUX    (see INT E0/CL=ADh)
  2219.  B0h    configure default AUX                (see INT E0/CL=B0h)
  2220.  B1h    get/set device control parameters        (see INT E0/CL=B1h)
  2221.  B2h    send Break through default AUX            (see INT E0/CL=B2h)
  2222.  B3h    allocate physical memory            (see INT E0/CL=B3h)
  2223.  B4h    free physical memory                (see INT E0/CL=B4h)
  2224.  B5h    map physical memory                (see INT E0/CL=B5h)
  2225.  B6h    nondestructive conditional message queue read    (see INT E0/CL=B6h)
  2226.  B7h    timed wait on system flag            (see INT E0/CL=B7h)
  2227.  B8h    get/set I/O port mapping            (see INT E0/CL=B8h)
  2228.  B9h    set list device timeout                (see INT E0/CL=B9h)
  2229.  BAh    set AUX timeout value                (see INT E0/CL=BAh)
  2230.  BBh    execute XIOS service
  2231.  BDh    (DR Multiuser DOS) delay            (see INT E0/CL=BDh)
  2232.  FFh    return 80386 to native mode
  2233. SeeAlso: #04020,#04021
  2234.  
  2235. (Table 04020)
  2236. Values for DOS Plus v2.1 XIOS functions:
  2237.  00h    terminate program
  2238.  01h    ???
  2239.  02h    check for console input status
  2240.  03h    read character from console
  2241.  04h    write character to console
  2242.  05h    write character to list device
  2243.  06h    write character to auxiliary device
  2244.  07h    read character from auxiliary device
  2245.  0Fh    get list device status
  2246.  10h-14h reserved
  2247.  15h    device initialization
  2248.  16h    check console output status
  2249.  17h-7Fh reserved
  2250. ---BBC Acorn---
  2251.  80h    get XIOS version
  2252.  81h    get Tube semaphore
  2253.  82h    release Tube semaphore
  2254.  83h    select text/graphics
  2255.  84h    update B&W graphics rectangle
  2256.  85h    update color graphics rectangle
  2257.  86h    get/release/update mouse
  2258.  87h    get system error info
  2259.  88h    entry in CLOCK called by WatchDog RSP
  2260.  89h    BBC OSBYTE function
  2261.  8Ah    BBC OSWORD function
  2262. SeeAlso: #04019
  2263.  
  2264. (Table 04021)
  2265. Values for DR Multiuser DOS Error Return Code:
  2266.  00h    no error
  2267.  01h    system call not implemented
  2268.  02h    illegal system call number
  2269.  03h    cannot find memory
  2270.  04h    illegal flag number
  2271.  05h    flag overrun
  2272.  06h    flag underrun
  2273.  07h    no unused Queue Descriptors
  2274.  08h    no free queue buffer
  2275.  09h    cannot find queue
  2276.  0Ah    queue in use
  2277.  0Ch    no free Process Descriptors
  2278.  0Dh    no queue access
  2279.  0Eh    empty queue
  2280.  0Fh    full queue
  2281.  10h    CLI queue missing
  2282.  11h    no 8087 in system
  2283.  12h    no unused Memory Descriptors
  2284.  13h    illegal console number
  2285.  14h    no Process Descriptor match
  2286.  15h    no console match
  2287.  16h    no CLI process
  2288.  17h    illegal disk number
  2289.  18h    illegal filename
  2290.  19h    illegal filetype
  2291.  1Ah    character not ready
  2292.  1Bh    illegal Memory Descriptor
  2293.  1Ch    bad return from BDOS load
  2294.  1Dh    bad return from BDOS read
  2295.  1Eh    bad return from BDOS open
  2296.  1Fh    null command
  2297.  20h    not owner of resource
  2298.  21h    no CSEG in load file
  2299.  22h    process Descriptor exists on Thread Root
  2300.  23h    could not terminate process
  2301.  24h    cannot attach to process
  2302.  25h    illegal list device number
  2303.  26h    illegal password
  2304.  28h    external termination occurred
  2305.  29h    fixup error upon load
  2306.  2Ah    flag set ignored
  2307.  2Bh    illegal auxilliary device number
  2308. SeeAlso: #04019
  2309. --------O-E0----CL00-------------------------
  2310. INT E0 - REAL/32 - "P_TERMCPM" - TERMINATE CALLING PROCESS
  2311.     CL = 00h
  2312. Return: AX = error code
  2313.         FFFFh on failure
  2314.     may destroy SI,DI???
  2315. Program: REAL/32 is the descendant of IMS Multiuser DOS, which in turn is
  2316.       derived from DR Multiuser DOS and its predecessors (Concurrent DOS,
  2317.       etc.)
  2318. Note:    sets the exit code (ERRORLEVEL) to 00h
  2319. SeeAlso: INT 21/AH=00h
  2320. --------O-E0----CL01-------------------------
  2321. INT E0 - REAL/32 - "C_READ" - FETCH CHARACTER FROM THE DEFAULT CONSOLE
  2322.     CL = 01h
  2323. Return: AX = character
  2324.     may destroy SI,DI???
  2325. Notes:    this function echos the character to the screen, expanding Tab
  2326.       characters to the next multiple of eight columns; Ctrl-C is
  2327.       ignored if the calling process can not terminate
  2328.     the calling process is suspended until a character is available; if
  2329.       the caller does not own the console, it is suspended until it
  2330.       can attach to the console
  2331. SeeAlso: INT E0/CL=02h,INT E0/CL=06h,INT 21/AH=01h
  2332. --------O-E0----CL02-------------------------
  2333. INT E0 - REAL/32 - "C_WRITE" - WRITE CHARACTER TO DEFAULT CONSOLE
  2334.     CL = 02h
  2335.     DX = character
  2336. Return: nothing
  2337.     may destroy SI,DI???
  2338. Note:    Tab characters are expanded to blanks up to the next multiple of
  2339.       eight columns
  2340. SeeAlso: INT E0/CL=01h,INT E0/CL=06h,INT 21/AH=02h
  2341. --------O-E0----CL03-------------------------
  2342. INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM DEFAULT AUX DEVICE
  2343.     CL = 03h
  2344. Return: AL = ASCII character
  2345.     may destroy SI,DI???
  2346. Notes:    A_READ reads the next 8-bit character from the logical auxilliary
  2347.       input device (AUXn:); control is not returned to the calling
  2348.       process until a character has been read.
  2349.     if another process owns AUX, this call blocks until the device becomes
  2350.       available
  2351.     this function is also supported by REAL/32
  2352. SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
  2353. --------O-E0----CL04-------------------------
  2354. INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO DEFAULT AUX DEVICE
  2355.     CL = 04h
  2356.     DL = BYTE to write
  2357. Return: nothing
  2358.     may destroy SI,DI,DH???
  2359. Note:    if another process owns AUX, this call blocks until the device becomes
  2360.       available
  2361. SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
  2362. --------O-E0----CL05-------------------------
  2363. INT E0 - REAL/32 - "L_WRITE" - WRITE CHARACTER TO DEFAULT LIST DEVICE
  2364.     CL = 05h
  2365.     DL = char to write
  2366. Return: nothing
  2367.     may destroy SI,DI???
  2368. Note:    if another process owns the list device, this call blocks until the
  2369.       device becomes available
  2370. SeeAlso: INT 21/AH=05h
  2371. --------O-E0----CL06-------------------------
  2372. INT E0 - REAL/32 - "C_RAWIO" - PERFORM RAW I/O WITH DEFAULT CONSOLE
  2373.     CL = 06h
  2374.     DL = mode describing the operation to be performed
  2375.         FFh get console input/status
  2376.         FEh get console status
  2377.         FDh get console input (blocking)
  2378.         else output DL to the console as a character
  2379. Return: AX = returned value
  2380.         for DL = FFh, the character or 00h if none available
  2381.         for DL = FEh, 00h if no characters available, FFh if any available
  2382.         for DL = FDh, the character read from the console
  2383.         else AX = 0000h
  2384.     may destroy SI,DI???
  2385. Notes:    during raw I/O, the special characters ^C, ^O, ^P, and ^S are not
  2386.       interpreted, but are passed through
  2387.     if the virtual console is in ^S mode and the owning process calls
  2388.       this function, the ^S state is cleared
  2389. SeeAlso: INT E0/CL=01h,INT E0/CL=02h,INT 21/AH=06h
  2390. --------O-E0----CL07-------------------------
  2391. INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE
  2392.     CL = 07h
  2393. Return: AL = status
  2394.         00h not ready
  2395.         FFh character available
  2396. Desc:    determine whether the current AUX device has input available
  2397. SeeAlso: INT E0/CL=03h,INT E0/CL=08h
  2398. --------O-E0----CL08-------------------------
  2399. INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
  2400.     CL = 08h
  2401. Return: AL = status
  2402.         00h not ready
  2403.         FFh ready for output
  2404. Desc:    determine whether the current AUX device is able to accept more output
  2405. SeeAlso: INT E0/CL=04h,INT E0/CL=07h
  2406. --------O-E0----CL09-------------------------
  2407. INT E0 - REAL/32 - "C_WRITESTR" - WRITE STRING TO DEFAULT CONSOLE
  2408.     CL = 09h
  2409.     DS:DX -> string
  2410. Return: nothing
  2411.     may destroy SI,DI,DS???
  2412. Note:    the string terminated with a '$' character (24h) by default; the
  2413.       terminator may be changed with C_DELIMIT
  2414.     tabs are expanded to the next multiple of eight columns
  2415. SeeAlso: INT E0/CL=6Eh
  2416. --------O-E0----CL0A-------------------------
  2417. INT E0 - REAL/32 - "C_READSTR" - READ STRING FROM DEFAULT CONSOLE
  2418.     CL = 0Ah
  2419.     DS:DX -> buffer for string (see #04022)
  2420. Return: nothing
  2421.  
  2422. Format of REAL/32 "C_READSTR" buffer:
  2423. Offset    Size    Description    (Table 04022)
  2424.  00h    BYTE    maximum number of characters buffer can hold
  2425.  01h    BYTE    actual number of buffers read
  2426.  02h  N BYTEs    input line
  2427. --------O-E0----CL0B-------------------------
  2428. INT E0 - REAL/32 - "C_STAT" - RETURN DEFAULT CONSOLE INPUT STATUS
  2429.     CL = 0Bh
  2430. Return: AX = status
  2431.         0000h no characters ready
  2432.         0001h character available
  2433.     may destroy SI,DI???
  2434. Note:    after setting bit 0 of the console mode word with C_MODE, this function
  2435.       will only return AX=0001h when the user presses Ctrl-C.
  2436. --------O-E0----CL0C-------------------------
  2437. INT E0 - REAL/32 - "S_BDOSVER" - GET BDOS VERSION
  2438.     CL = 0Ch
  2439. Return: AX = version (see #04023)
  2440.     may destroy SI,DI???
  2441. SeeAlso: INT E0/CL=A3h,INT 21/AX=4451h
  2442.  
  2443. (Table 04023)
  2444. Values for REAL/32 BDOS version:
  2445.  1432h    - DR Concurrent PC DOS Version 3.2
  2446.  1441h    - DR Concurrent DOS Version 4.1
  2447.  1450h    - DR Concurrent DOS/XM Version 5.0
  2448.  1463h    - DR Multiuser DOS Release 5.0
  2449.  1465h    - DR Multiuser DOS Release 5.01
  2450.  1466h    - DR Multiuser DOS Release 5.1, IMS Multiuser DOS Enhanced Release 5.1
  2451.  1467h    - IMS Multiuser DOS Version 7.0, 7.1
  2452.  1468h    - IMS REAL/32 Version 7.50, 7.51
  2453.  1469h    - IMS REAL/32 Version 7.52, 7.53
  2454.  14??h    - IMS REAL/32 Version 7.6
  2455. SeeAlso: #01579,#01580,#01581
  2456. --------O-E0----CL2F-------------------------
  2457. INT E0 - REAL/32 - "P_CHAIN" - CHAIN PROCESS
  2458.     CL = 2Fh
  2459.     [DTA] = ASCIZ command line for process to start
  2460. Return: AX = return code
  2461.         0000h successful
  2462.         FFFFh failed
  2463.     may destroy SI,DI???
  2464. --------O-E0----CL35-------------------------
  2465. INT E0 R - REAL/32 - "MC_MAX" - CP-M/86 ALLOCATE MAXIMUM MEMORY
  2466.     CL = 35h
  2467.     DS:DX -> MCB (see #04024)
  2468. Return: AX = status
  2469.     may destroy SI,DI,DS???
  2470. SeeAlso: INT E0/CL=39h
  2471.  
  2472. Format of REAL/32 MCB (Memory Control Block):
  2473. Offset    Size    Description    (Table 04024)
  2474.  00h    WORD    segment address of memory block
  2475.  02h    WORD    length of block in paragraphs
  2476.  04h    BYTE    reserved (0)
  2477. --------O-E0----CL36-------------------------
  2478. INT E0 R - REAL/32 - "MC_ABSMAX" - ALLOCATE MAXIMUM MEMORY SEGMENT ABSOLUTE
  2479.     CL = 36h
  2480.     DS:DX -> MCB (see #04024)
  2481. Return: AX = status
  2482.     may destroy SI,DI,DS???
  2483. SeeAlso: INT E0/CL=39h
  2484. --------O-E0----CL37-------------------------
  2485. INT E0 R - REAL/32 - "MC_ALLOC" - CP-M/86 ALLOCATE MEMORY SEGMENT
  2486.     CL = 37h
  2487.     DS:DX -> MCB (see #04024)
  2488. Return: AX = status
  2489.     may destroy SI,DI,DS???
  2490. SeeAlso: INT E0/CL=39h
  2491. --------O-E0----CL38-------------------------
  2492. INT E0 R - REAL/32 - "MC_ABSALLOC" - ALLOCATE MEMORY SEGMENT ABSOLUTE
  2493.     CL = 38h
  2494.     DS:DX -> MCB (see #04024)
  2495. Return: AX = status
  2496.     may destroy SI,DI,DS???
  2497. SeeAlso: INT E0/CL=39h
  2498. --------O-E0----CL39-------------------------
  2499. INT E0 R - REAL/32 - "MC_FREE" - CP-M/86 FREE SPECIFIED MEMORY SEGMENT
  2500.     CL = 39h
  2501.     DS:DX -> MCB (see #04024)
  2502. Return: AX = status
  2503.     may destroy SI,DI,DS???
  2504. SeeAlso: INT E0/CL=3Ah
  2505. --------O-E0----CL3A-------------------------
  2506. INT E0 R - REAL/32 - "MC_ALLFREE" - CP-M/86 FREE ALL MEMORY
  2507.     CL = 3Ah
  2508. Return: nothing???
  2509. Desc:    release all of the calling process's memory except the User Data Area
  2510. SeeAlso: INT E0/CL=39h
  2511. --------O-E0----CL3B-------------------------
  2512. INT E0 u - REAL/32 - "P_LOAD" - LOAD .CMD FILE INTO MEMORY
  2513.     CL = 3Bh
  2514.     ???
  2515. Return: ???
  2516. Note:    IMS does not document the details of this call because .CMD files are
  2517.       supported for backward compatibility only
  2518. --------O-E0----CL40-------------------------
  2519. INT E0 - REAL/32 - "N_LOGON" - LOG ONTO A SERVER
  2520.     CL = 40h
  2521.     DS:DX -> LPB (see #04025)
  2522. Return: AX = status (0000h,00FFh,07FFh,0DFFh,0EFFh,FFFFh) (see #04030)
  2523.     may destroy SI,DI,DS???
  2524. SeeAlso: INT E0/CL=41h
  2525.  
  2526. Format of REAL/32 Logon/Logoff Parameter Block:
  2527. Offset    Size    Description    (Table 04025)
  2528.  00h    BYTE    node ID
  2529.  01h  8 BYTEs    password for server access
  2530.  09h    DWORD    -> process descriptor of process to be logged on (see #04026)
  2531.  
  2532. Format of REAL/32 Process Descriptor:
  2533. Offset    Size    Description    (Table 04026)
  2534.  00h    WORD    offset of next entry in current descriptor list
  2535.  02h    WORD    offset of thread list
  2536.  04h    BYTE    current processor status (see #04027)
  2537.  05h    BYTE    priority
  2538.  06h    WORD    runtime flags (see #04028)
  2539.  08h  8 BYTEs    process name
  2540.  10h    WORD    segment of User Data Area (256 or 352 bytes)
  2541.  12h    BYTE    current default disk drive
  2542.  13h    BYTE    drive from which process was loaded
  2543.  14h    WORD    reserved (0)
  2544.  16h    WORD    offset of memory descriptor list for memory owned by process
  2545.  18h  6 BYTEs    reserved
  2546.  1Eh    WORD    offset of process descriptor for parent process
  2547.         0000h if parent has already terminated
  2548.  20h    BYTE    number of default console
  2549.  21h    BYTE    number of default AUX device
  2550.  22h  2 BYTEs    reserved
  2551.  24h    BYTE    number of default list device
  2552.  25h    BYTE    reserved
  2553.  26h    WORD    flags (see #04029)
  2554.  28h 12 BYTEs    reserved
  2555.  34h    WORD    offset of memory page allocation root
  2556.  36h 22 BYTEs    reserved
  2557. SeeAlso: #04025
  2558.  
  2559. (Table 04027)
  2560. Values for REAL/32 processor status:
  2561.  00h    process is ready to run
  2562.  01h    process is polling a device
  2563.  02h    delaying for a number of ticks
  2564.  03h    in swap list
  2565.  04h    terminating
  2566.  05h    asleep
  2567.  06h    waiting to read a message from a queue
  2568.  07h    waiting to write a message
  2569.  08h    waiting on system flag or semaphore
  2570.  09h    waiting to attach to an I/O device
  2571.  0Ah    waiting on sync block
  2572.  0Bh    waiting for system flag or semaphore with timeout
  2573.  0Ch    forced dispatch
  2574. SeeAlso: #04026
  2575.  
  2576. Bitfields for REAL/32 process flags:
  2577. Bit(s)    Description    (Table 04028)
  2578.  0    system process
  2579.  1    do not terminate
  2580.  2    special rsp process
  2581.  3    from process descriptor table
  2582.  14-4    unused???
  2583.  15    uses math coprocessor
  2584. SeeAlso: #04026,#04029
  2585.  
  2586. Bitfields for REAL/32 secondary flags:
  2587. Bit(s)    Description    (Table 04029)
  2588.  0    suspend when in background
  2589.  1    ???
  2590.  2    in foreground
  2591.  3    enable APPEND processing on file opens
  2592.  4    Ctrl-C was typed
  2593.  5    Ctrl-C will reset disk system
  2594.  6    OK to read locked record
  2595.  7    ???
  2596.  8    do not perform banking
  2597. SeeAlso: #04026,#04028
  2598.  
  2599. (Table 04030)
  2600. Values for REAL/32 "N_LOGON" status:
  2601.  0000h    successful
  2602.  00FFh    server could not create shadow process
  2603.  07FFh    incorrect password
  2604.  0CFFh    not logged into specified server
  2605.  0DFFh    process already logged onto 16 servers,
  2606.     LPB process not attached to network
  2607.  0EFFh    physical transmission prevented message or response from getting thru
  2608.     network error during logoff
  2609.  FFFFh    calling process not attached to network
  2610. --------O-E0----CL41-------------------------
  2611. INT E0 - REAL/32 - "N_LOGON" - LOG OFF A SERVER
  2612.     CL = 41h
  2613.     DS:DX -> LPB (see #04025)
  2614. Return: AX = status (0000h,0CFFh,0DFFh,0EFFh,FFFFh) (see #04030)
  2615.     may destroy SI,DI,DS???
  2616. SeeAlso: INT E0/CL=40h
  2617. --------O-E0----CL44-------------------------
  2618. INT E0 - REAL/32 - "N_STAT" - GET NETWORK STATUS
  2619.     CL = 44h
  2620. Return: AX = network status or 0FFFh on error
  2621.         bit 8: calling process is attached to network
  2622.     may destroy SI,DI???
  2623. --------O-E0----CL45-------------------------
  2624. INT E0 - REAL/32 - "N_RCT" - GET REQUESTOR CONFIGURATION TABLE
  2625.     CL = 45h
  2626.     DS:DX -> RCT Control Block (see #04031,#04032)
  2627. Return: AX = status or error code (see #04033,#04030)
  2628.     may destroy SI,DI,DS???
  2629. SeeAlso: INT E0/CL=47h
  2630.  
  2631. Format of REAL/32 RCT Control Block for Drives:
  2632. Offset    Size    Description    (Table 04031)
  2633.  00h    BYTE    command byte
  2634.         00h map disk drive
  2635.         02h map list device
  2636.  01h    BYTE    local resource ID
  2637.  02h    BYTE    remote resource ID
  2638.  03h    BYTE    server node ID number
  2639. Note:    the RCT Control Block is a union of two possible structures; this
  2640.       variant is used when mapping disk drives and list devices
  2641. SeeAlso: #04032
  2642.  
  2643. Format of REAL/32 RCT Control Block for Queues:
  2644. Offset    Size    Description    (Table 04032)
  2645.  00h    BYTE    command byte
  2646.         03h map local queue to server
  2647.         04h unmap queue
  2648.  01h  8 BYTEs    local queue name (case-sensitive)
  2649.  09h  8 BYTEs    remote queue name (case-sensitive)
  2650.  11h    BYTE    server node ID number
  2651. Note:    the RCT Control Block is a union of two possible structures; this
  2652.       variant is used when mapping queues
  2653. SeeAlso: #04031
  2654.  
  2655. (Table 04033)
  2656. Values for REAL/32 "N_RCT" status:
  2657.  0000h    successful
  2658.  0001h    invalid local device
  2659.  0002h    invalid remote device
  2660.  0003h    no queue entry space
  2661. --------O-E0----CL47-------------------------
  2662. INT E0 - REAL/32 - "N_SCT" - GET SERVER CONFIGURATION TABLE
  2663.     CL = 47h
  2664.     DS:DX -> 112-byte buffer for Server Configuration Table (see #04034)
  2665. Return: AX = status (0000h successful, else error code)
  2666.     may destroy SI,DI,DS???
  2667. Note:    the first byte of the SCT buffer is set to the desired server number
  2668.       prior to calling this function
  2669. SeeAlso: INT E0/CL=45h
  2670.  
  2671. Format of REAL/32 Server Configuration Table:
  2672. Offset    Size    Description    (Table 04034)
  2673.  00h    BYTE    server's default physical drive ID
  2674.  01h    BYTE    network status
  2675.  02h    BYTE    server node ID number
  2676.  03h    BYTE    maximum number of requesters supported by server
  2677.  04h    BYTE    current number of shadow processes
  2678.  05h 108 BYTEs    six logon structures, each:
  2679.         Offset    Size    Description
  2680.          00h    WORD    bit vector of logged-in nodes
  2681.          02h 16 BYTEs    list of requester node IDs
  2682. --------O-E0----CL48-------------------------
  2683. INT E0 - REAL/32 - "N_ERRMODE" - SET NETWORK ERROR MODE
  2684.     CL = 48h
  2685.     DL = new error mode
  2686.         FFh return error in registers AX,BX,CX
  2687.         FEh display message and return error
  2688.         FDh display message and abort (default)
  2689. Return: CX = error code (0000h successful, FFFFh failed)
  2690.     may destroy SI,DI???
  2691. Desc:    specify how the REAL/32 Net Server responds to error numbers 0CFFh,
  2692.       0DFFh, and 0EFFh (see #04030)
  2693. --------O-E0----CL59-------------------------
  2694. INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
  2695.     CL = 59h
  2696.     DX = size in bytes
  2697. Return: AX = status
  2698.         FFFFh failed
  2699.         other successful
  2700.         ES:BX -> reserved memory
  2701. --------O-E0----CL5C-------------------------
  2702. INT E0 - REAL/32 - "P_PATH" - SCAN PATH FOR EXECUTABLE FILE
  2703.     CL = 5Ch
  2704.     DS:DX -> Exec Parameter Block (EPB) (see #04035)
  2705. Return:    AX = status
  2706.         FFFEh file not found
  2707.         FFFDh path not found
  2708.         FFFCh too many handles open
  2709.         FFFBh access denied
  2710.         FFF6h invalid environment
  2711.         FFDCh sharing conflict
  2712.         FFAAh invalid password
  2713.     EPB updated (if successful)
  2714.     may destroy SI,DI,DS
  2715. SeeAlso: INT E0/CL=5Dh,INT E0/CL=5Eh,INT 21/AH=4Bh
  2716.  
  2717. Format of REAL/32 Exec Parameter Block (EPB):
  2718. Offset    Size    Description    (Table 04035)
  2719.  00h    DWORD    -> ASCIZ command to be executed
  2720.  04h    BYTE    type of exec
  2721.         00h .CMD
  2722.         01h .COM
  2723.         02h .EXE
  2724.         03h .BAT
  2725.         04h RSP-type queue
  2726.  05h    BYTE    flags
  2727.         bit 0: overlay existing program
  2728.         bit 1: don't assign console to child
  2729.         bit 2: allocate memory for .CMD within parent's memory space
  2730.         bit 3: make full banked window available while loading child
  2731.  06h    DWORD    32-bit offset to ASCIZ command line
  2732.  0Ah    WORD    selector for ASCIZ command line
  2733. --------O-E0----CL5D-------------------------
  2734. INT E0 - REAL/32 - "P_EXEC" - EXECUTE CHILD PROCESS
  2735.     CL = 5Dh
  2736.     DS:DX -> Exec Parameter Block (EPB) (see #04035)
  2737. Return:    AX = status
  2738.         FFFEh file not found
  2739.         FFFDh path not found
  2740.         FFFCh too many handles open
  2741.         FFFBh access denied
  2742.         FFF6h invalid environment
  2743.         FFDCh sharing conflict
  2744.         FFAAh invalid password
  2745.     EPB updated (if successful)
  2746.     may destroy SI,DI,DS
  2747. SeeAlso: INT E0/CL=5Ch,INT E0/CL=5Eh,INT 21/AH=4Bh
  2748. --------O-E0----CL5E-------------------------
  2749. INT E0 - REAL/32 - "P_EXITCODE" - GET/SET PROCESS EXIT CODE
  2750.     CL = 5Eh
  2751.     DX = exit code or FFFFh to get
  2752.         DH ignored when setting code
  2753.         DL = process exit code
  2754. Return: AX = status (FFFFh on error)
  2755.     if getting:
  2756.         AH = termination reason
  2757.         00h normal
  2758.         01h external termination via Ctrl-C or P_ABORT
  2759.         02h hardware (critical) error abort
  2760.         03h child did not terminate
  2761.         FFh illegal request (no child, or exit code already retrieved)
  2762.         AL = process exit code
  2763. SeeAlso: INT E0/CL=5Dh,INT 21/AH=4Ch
  2764. --------O-E0----CL6B-------------------------
  2765. INT E0 - REAL/32 - "S_SERIAL" - GET OS SERIAL NUMBER
  2766.     CL = 6Bh
  2767.     DS:DX -> 6-byte buffer for ASCII serial number
  2768. Return: nothing???
  2769. --------O-E0----CL6D-------------------------
  2770. INT E0 - REAL/32 - "C_MODE" - GET/SET CONSOLE MODE
  2771.     CL = 6Dh
  2772.     DX = new console mode (see #04036), or FFFFh to get current mode
  2773. Return: AX = status if setting (0000h = success)
  2774.     AX = current console mode if DX=FFFFh on entry
  2775.  
  2776. Bitfields for REAL/32 console mode:
  2777. Bit(s)    Description    (Table 04036)
  2778.  0    C_STAT function will return 01h only when Ctrl-C is pressed
  2779.  1    disable support for stop/start scroll (Ctrl-S/Ctrl-Q)
  2780.  2    raw console output (no tab expansion, no printer echo)
  2781.  3    disable program termination on Ctrl-C
  2782.  7    disable Ctrl-O console bit-bucket
  2783.  10    enable Esc as end-of-line character
  2784. --------O-E0----CL6E-------------------------
  2785. INT E0 - REAL/32 - "C_DELIMIT" - GET/SET STRING DELIMITER
  2786.     CL = 6Eh
  2787.     DX = new delimiter, or FFFFh to get current string delimiter
  2788. Return: AX = status (0000h success) if setting
  2789.     AX = current string delimiter (default is 24h '$' at process start)
  2790. SeeAlso: INT E0/CL=09h
  2791. --------O-E0----CL6F-------------------------
  2792. INT E0 - REAL/32 - "C_WRITEBLK" - WRITE BLOCK TO DEFAULT CONSOLE
  2793.     CL = 6Fh
  2794.     DS:DX -> Character Control Block (see #04051,#04052)
  2795. Return: nothing???
  2796. SeeAlso: INT E0/CL=70h
  2797. --------O-E0----CL70-------------------------
  2798. INT E0 - REAL/32 - "L_WRITEBLK" - WRITE BLOCK TO DEFAULT LIST (PRINTER) DEVICE
  2799.     CL = 70h
  2800.     DS:DX -> Character Control Block (see #04051,#04052)
  2801. Return: nothing???
  2802. SeeAlso: INT E0/CL=6Fh
  2803. --------O-E0----CL71-------------------------
  2804. INT E0 R - ConcCP/M,DR Multiuser DOS - EXECUTE DOS-COMPATIBLE FUNCTIONS
  2805.     CL = 71h
  2806.     DS:DX -> parameter block (see #04038)
  2807. Return: AX = status (0000h successful, else error code)
  2808.     may destroy SI,DI,DS
  2809.  
  2810. (Table 04037)
  2811. Values for DR "execute DOS-compatible function" function number:
  2812.  00h    "fd_getdpb"    get disk information (see also INT 21/AH=32h)
  2813.  01h    "fd_mkdir"    create directory (see also INT 21/AH=39h)
  2814.  02h    "fd_rmdir"    remove directory (see also INT 21/AH=3Ah)
  2815.  03h    "fd_chdir"    change directory (see also INT 21/AH=3Bh)
  2816.  04h    "fd_creat"    create file (see also INT 21/AH=3Ch)
  2817.  05h    "fd_open"    open existing file (see also INT 21/AH=3Dh)
  2818.  06h    "fd_close"    close file (see also INT 21/AH=3Eh)
  2819.  07h    "fd_read"    read from file (see also INT 21/AH=3Fh)
  2820.  08h    "fd_write"    write to file (see also INT 21/AH=40h)
  2821.  09h    "fd_delete"    delete file (see also INT 21/AH=41h)
  2822.  0Ah    "fd_lseek"    get/set file position (see also INT 21/AH=42h)
  2823.  0Bh    "fd_chmod"    get/set file attributes (see also INT 21/AH=43h)
  2824.  0Ch    "fd_curdir"    get current directory (see also INT 21/AH=47h)
  2825.  0Dh    "fd_sfirst"    find first matching file (see also INT 21/AH=4Eh)
  2826.  0Eh    "fd_snext"    find next matching file (see also INT 21/AH=4Fh)
  2827.  0Fh    "fd_rename"    rename file (see also INT 21/AH=56h)
  2828.  10h    "fd_gsfdate"    get/set file date (see also INT 21/AX=5700h)
  2829.  11h    "fd_mktemp"    make temporary file (see also INT 21/AH=5Ah)
  2830.  12h    "fd_mknew"    create new file (see also INT 21/AH=5Bh)
  2831.  13h    "fd_lock"    lock/unlock file data (see also INT 21/AH=5Ch)
  2832.  14h    "fd_dup"    duplicate file handle (see also INT 21/AH=45h)
  2833.  15h    "fd_dup2"    force duplicate file handle (see also INT 21/AH=46h)
  2834.  16h-19h ???
  2835.  1Ah    "fd_ioctl"    I/O control emulation
  2836.  1Bh    "fd_commit"    commit file to disk (see also INT 21/AH=68h)
  2837.  1Ch    "fd_expand"    expand file name (see also INT 21/AH=60h)
  2838.  1Dh    ???
  2839.  1Eh    ???
  2840.  1Fh    "fd_sethandles" set number of handles for calling process
  2841. SeeAlso: #04038
  2842.  
  2843. Format of DR "execute DOS-compatible function" parameter block:
  2844. Offset    Size    Description    (Table 04038)
  2845.  00h    WORD    function number (see #04037)
  2846. ---function 00h---
  2847.  02h    WORD    drive
  2848.  04h    DWORD    -> DPB (see #04039)
  2849. ---function 01h,02h,03h---
  2850.  02h    DWORD    -> ASCIZ directory name
  2851. ---function 04h---
  2852.  02h    DWORD    -> ASCIZ filename
  2853.  06h    WORD    file attributes
  2854. ---function 05h---
  2855.  02h    DWORD    -> ASCIZ filename
  2856.  06h    WORD    open mode (see INT 21/AH=3Dh)
  2857. ---function 06h---
  2858.  02h    WORD    file handle
  2859. ---function 07h,08h---
  2860.  02h    WORD    file handle
  2861.  04h    DWORD    -> buffer
  2862.  08h    WORD    number of bytes to read or write
  2863. ---function 09h---
  2864.  02h    DWORD    -> ASCIZ filename
  2865. ---function 0Ah---
  2866.  02h    WORD    file handle
  2867.  04h    DWORD    (call) desired offset
  2868.         (ret) new file position if function is successful
  2869.  08h    WORD    seek origin (offset is calculated from specified position)
  2870.         00h start of file
  2871.         01h current position
  2872.         02h end of file
  2873. ---function 0Bh---
  2874.  02h    DWORD    -> ASCIZ filename
  2875.  06h    WORD    (call) new file attributes or new file owner
  2876.         (ret) current/new file attributes, depending on function
  2877.  08h    WORD    subfunction
  2878.         00h get attribute
  2879.         01h set attribute
  2880.         02h get extended attributes
  2881.         03h set extended attributes (and password)
  2882.         04h get encrypted password
  2883.         05h set extended attributes (and encrypted password)
  2884.         06h get file owner
  2885.         07h set file owner
  2886.         Note: the password is taken from the first 8 bytes of the DTA
  2887. ---function 0Ch---
  2888.  02h    WORD    drive
  2889.  04h    DWORD    -> 64-byte buffer for ASCIZ current directory path
  2890. ---function 0Dh---
  2891.  02h    DWORD    -> ASCIZ filespec
  2892.  06h    WORD    file attributes
  2893.  08h    WORD    (call) size of buffer pointed at by current DTA
  2894.         (ret) number of matching files returned???
  2895.         Note:    if the volume label attribute is specified, the root
  2896.               directory will be searched
  2897.             if the buffer is at least 47 bytes, multiple matching
  2898.               entries will be stored in the DTA (at 21 bytes per
  2899.               entry)
  2900. ---function 0Eh---
  2901.  02h    WORD    number of additional matches to store in DTA
  2902.         (normally set to 0, but if DTA is at least 47 bytes, can be
  2903.           set to (DTAsize-21)/26 to return multiple matches)
  2904. ---function 0Fh---
  2905.  02h    DWORD    -> ASCIZ filename
  2906.  06h    DWORD    -> ASCIZ new name
  2907. ---function 10h---
  2908.  02h    WORD    file handle
  2909.  04h    WORD    subfunction
  2910.         00h get date and time
  2911.         01h set date and time
  2912.  06h    WORD    file date
  2913.  08h    WORD    file time
  2914. ---function 11h---
  2915.  02h    DWORD    -> ASCIZ pathname + 13 extra bytes for generated filename
  2916.         (if pathname does not end in backslash, one will be appended)
  2917.  06h    WORD    file attributes
  2918. ---function 12h---
  2919.  02h    DWORD    -> ASCIZ filename
  2920.  06h    WORD    file attributes
  2921. ---function 13h---
  2922.  02h    WORD    file handle
  2923.  04h    DWORD    offset of start of region
  2924.  08h    DWORD    length of region to lock/unlock
  2925.  0Ch    WORD    subfunction (00h = lock, 01h = unlock)
  2926. ---function 14h---
  2927.  02h    WORD    file handle to be duplicated
  2928.         (new file handle is returned as function return value)
  2929. ---function 15h---
  2930.  02h    WORD    file handle to be duplicated
  2931.  04h    WORD    file handle which is to become the duplicate
  2932. ---function 1Ah, form 1---
  2933.  02h    WORD    file handle
  2934.  04h    WORD    IOCTL function number (00h,01h,06h,07h,0Ah)
  2935.  06h    WORD    (ret) status
  2936. ---function 1Ah, form 2---
  2937.  02h    WORD    drive number
  2938.  04h    WORD    IOCTL function number (08h,09h,0Eh,0Fh)
  2939.  06h    WORD    (ret) status
  2940. ---function 1Ah, form 3---
  2941.  02h    WORD    file handle
  2942.  04h    WORD    IOCTL function number (02h,03h,54h)
  2943.  06h    DWORD    -> buffer
  2944.  0Ah    WORD    (call) size of buffer in bytes
  2945.         (ret) size of returned data
  2946. ---function 1Ah, form 4---
  2947.  02h    WORD    drive number
  2948.  04h    WORD    IOCTL function number (04h,05h)
  2949.  06h    DWORD    -> buffer
  2950.  0Ah    WORD    (call) size of buffer in bytes
  2951.         (ret) size of returned data
  2952. ---function 1Bh---
  2953.  02h    WORD    file handle of file to be committed to disk
  2954. ---function 1Ch---
  2955.  02h    DWORD    -> ASCIZ relative filename
  2956.  06h    DWORD    -> buffer for absolute filename
  2957. ---function 1Fh---
  2958.  02h    WORD    desired number of file handles for process
  2959.  
  2960. Format of DR Multiuser DOS Disk Parameter Block (DPB):
  2961. Offset    Size    Description    (Table 04039)
  2962.  00h    BYTE    drive number (00h = A:)
  2963.  01h    BYTE    relative unit number
  2964.  02h    WORD    sector size in bytes
  2965.  04h    BYTE    sectors per cluster - 1
  2966.  05h    BYTE    shift count to convert clusters into sectors
  2967.  06h    WORD    number of reserved sectors at beginning of drive
  2968.  08h    BYTE    number of FATs
  2969.  09h    WORD    number of root directory entries
  2970.  0Bh    WORD    number of first sector containing user data
  2971.  0Dh    WORD    number of clusterse on disk
  2972.  0Fh    BYTE    number of sectors per FAT
  2973.  10h    WORD    sector number of first directory sector
  2974.  12h  4 BYTEs    reserved
  2975.  16h    BYTE    media ID byte (see #01356)
  2976.  17h    BYTE    00h if disk accessed, FFh if not
  2977.  18h  6 BYTEs    reserved
  2978.  1Eh    WORD    number of free clusters on drive
  2979. Note:    this structure is a subset of the MS-DOS 3.x Drive Parameter Block
  2980. SeeAlso: #04038,#01357 at INT 21/AH=1Fh,#01395 at INT 21/AH=32h
  2981. --------O-E0----CL73-------------------------
  2982. INT E0 - GSX-86, GEM/1, GEM/2 - API
  2983.     CL = 73h
  2984.     CH = 04h
  2985.     DS:DX -> parameter block
  2986. --------O-E0----CL80-------------------------
  2987. INT E0 - REAL/32 - "M_ALLOC" - ALLOCATE MEMORY
  2988.     CL = 80h
  2989.     DS:DX -> Memory Parameter Block (MPB) (see #04040)
  2990. Return: AX = status (0000h success, else error code)
  2991. SeeAlso: INT E0/CL=81h
  2992.  
  2993. Format of REAL/32 Memory Parameter Block (MPB):
  2994. Offset    Size    Description    (Table 04040)
  2995.  00h    WORD    (call) desired starting paragraph of block, or
  2996.           0000h for anywhere
  2997.         (ret) starting paragraph of allocated block
  2998.  02h    WORD    (call) minimum number of paragraphs required
  2999.         (ret) actual number of paragraphs allocated
  3000.  04h    WORD    (call) maximum number of paragraphs to allocate
  3001.         (ret) actual number of paragraphs allocated
  3002.  06h    WORD    process descriptor (see #04026) of memory's owner or 0000h
  3003.  08h    WORD    flags (normally set to 0000h on call)
  3004. SeeAlso: #04041
  3005. --------O-E0----CL81-------------------------
  3006. INT E0 - REAL/32 - "M_FREE" - DEALLOCATE MEMORY
  3007.     CL = 81h
  3008.     DS:DX -> Memory Free Parameter Block (MFPB) (see #04041)
  3009. Return: AX = status (0000h success, else error code)
  3010. SeeAlso: INT E0/CL=81h
  3011.  
  3012. Format of REAL/32 Memory Free Parameter Block (MFPB) :
  3013. Offset    Size    Description    (Table 04041)
  3014.  00h    WORD    starting segment of block to be freed
  3015.  02h    WORD    reserved (0)
  3016. SeeAlso: #04040
  3017. --------O-E0----CL84-------------------------
  3018. INT E0 - REAL/32 - "DEV_WAITFLAG" - WAIT ON SYSTEM FLAG
  3019.     CL = 84h
  3020.     DX = system flag ID
  3021. Return: AX = status (0000h success, else error code)
  3022.     if successful, this function does not return until the system flag has
  3023.       been set by an interrupt handler (see INT E0/CL=85h); if the flag was
  3024.       already set, this call returns immediately
  3025. SeeAlso: INT E0/CL=85h,INT E0/CL=B7h
  3026. --------O-E0----CL85-------------------------
  3027. INT E0 - REAL/32 - "DEV_SETFLAG" - SET SYSTEM FLAG
  3028.     CL = 85h
  3029.     DX = system flag ID
  3030. Return: AX = status (0000h success, else error code)
  3031. Note:    REAL/32 returns an error if the flag was already set, which indicates
  3032.       that a previous logical interrupt has not yet been serviced
  3033. SeeAlso: INT E0/CL=84h
  3034. --------O-E0----CL86-------------------------
  3035. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
  3036.     CL = 86h
  3037.     DS:DX -> queue descriptor (see #04042)
  3038. Return: AX = status (0000h success, FFFFh failure)
  3039.     CX = error code (see #04021)
  3040. Note:    also supported by REAL/32
  3041. SeeAlso: INT E0/CL=87h
  3042.  
  3043. Format of DR Multiuser DOS queue descriptor:
  3044. Offset    Size    Description    (Table 04042)
  3045.  00h  2 WORDs    internal use, initialize to zeros
  3046.  04h    WORD    queue flags (see #04043)
  3047.  06h  8 BYTEs    queue name
  3048.  0Eh    WORD    length of message
  3049.  10h    WORD    number of messages
  3050.  12h  4 WORDs    internal use, initialize to zeros
  3051.  1Ah    WORD    offset in system area of buffer for messages
  3052.  
  3053. Bitfields for REAL/32 queue flags:
  3054. Bit(s)    Description    (Table 04043)
  3055.  0    mutual exclusion queue
  3056.  1    can not be deleted
  3057.  2    restricted to system processes
  3058.  3    RSP message queue
  3059.  4    reserved for internal use
  3060.  5    RPL address queue
  3061.  7-6    reserved for internal use
  3062.  15-8    reserved for future use
  3063. SeeAlso: #04042
  3064. --------O-E0----CL87-------------------------
  3065. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
  3066.     CL = 87h
  3067.     DS:DX -> queue parameter block (QPB) (see #04044,#04045)
  3068. Return: AX = status (0000h success, FFFFh failure)
  3069.     CX = error code (see #04021)
  3070. Note:    also supported by REAL/32
  3071. SeeAlso: INT E0/CL=86h,INT E0/CL=88h,INT E0/CL=89h
  3072.  
  3073. Format of DR Multiuser DOS queue parameter block:
  3074. Offset    Size    Description    (Table 04044)
  3075.  00h    WORD    internal use, initialize to zero
  3076.  02h    WORD    queue ID (set by INT E0/CL=87h)
  3077.  04h    WORD    internal use, initialize to zero
  3078.  06h    WORD    offset of queue message buffer
  3079.         (REAL/32) if FFFFh, then full address of buffer is stored at
  3080.           offest 10h
  3081.  08h  8 BYTEs    queue name
  3082. ---REAL/32 only----
  3083.  10h    DWORD    segment:offset of queue message buffer
  3084. SeeAlso: #04045
  3085.  
  3086. Format of protected-mode REAL/32 Queue Parameter Block (QPB):
  3087. Offset    Size    Description    (Table 04045)
  3088.  00h    WORD    internal use
  3089.  02h    WORD    queue ID
  3090.  04h    WORD    internal use
  3091.  06h    DWORD    32-bit offset to buffer
  3092.  0Ah    WORD    selector for buffer
  3093.  0Ch  8 BYTEs    queue name
  3094. SeeAlso: #04044
  3095. --------O-E0----CL88-------------------------
  3096. INT E0 - REAL/32 - "Q_DELETE" - DELETE SYSTEM QUEUE
  3097.     CL = 88h
  3098.     DS:DX -> queue parameter block (QPB) (see #04044,#04045)
  3099. Return: AX = status (0000h success, FFFFh failure)
  3100. SeeAlso: INT E0/CL=87h
  3101. --------O-E0----CL89-------------------------
  3102. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
  3103.     CL = 89h
  3104.     DS:DX -> queue parameter block (QPB) (see #04044,#04045)
  3105. Return: AX = status (0000h success, FFFFh failure)
  3106.     CX = error code (see #04021)
  3107. Note:    also supported by REAL/32
  3108. SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh,INT E0/CL=B6h
  3109. --------O-E0----CL8A-------------------------
  3110. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
  3111.     CL = 8Ah
  3112.     DS:DX -> queue parameter block (QPB) (see #04044,#04045)
  3113. Return: AX = status (0000h success, FFFFh failure)
  3114.     CX = error code (see #04021)
  3115. Note:    also supported by REAL/32
  3116. SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch,INT E0/CL=B6h
  3117. --------O-E0----CL8B-------------------------
  3118. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
  3119.     CL = 8Bh
  3120.     DS:DX -> queue parameter block (QPB) (see #04044,#04045)
  3121. Return: AX = status (0000h success, FFFFh failure)
  3122.     CX = error code (see #04021)
  3123. Note:    also supported by REAL/32
  3124. SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
  3125. --------O-E0----CL8C-------------------------
  3126. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
  3127.     CL = 8Ch
  3128.     DS:DX -> queue parameter block (QPB) (see #04044,#04045)
  3129. Return: AX = status (0000h success, FFFFh failure)
  3130.     CX = error code (see #04021)
  3131. Note:    also supported by REAL/32
  3132. SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
  3133. --------O-E0----CL8E-------------------------
  3134. INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
  3135.     CL = 8Eh
  3136.     DX = FFFFh (optional) to force dispatch
  3137. Return: nothing
  3138. Desc:    allow other processes of the same or higher priority to run if they
  3139.       are ready
  3140. Notes:    if DX=FFFFh, a dispatch is forced even if no other process is ready
  3141.     also supported by REAL/32
  3142. SeeAlso: INT E0/CL=91h,INT 15/AX=1000h,INT 2F/AX=1680h
  3143. --------O-E0----CL8F-------------------------
  3144. INT E0 - REAL/32 - "P_TERM" - TERMINATE CALLING PROCESS
  3145.     CL = 8Fh
  3146.     DX = termination code
  3147. Return: never if successful
  3148.     AX = FFFFh on failure
  3149. Note:    this function can not terminate processes whose KEEP flag is set
  3150.     if the termination code is FFh, this function can terminate the process
  3151.       even if its SYSTEM flag is on; otherwise, only user processes can
  3152.       terminate themselves
  3153. SeeAlso: INT E0/CL=90h,INT 21/AH=4Ch
  3154. --------O-E0----CL90-------------------------
  3155. INT E0 - REAL/32 - "P_CREATE" - CREATE A PROCESS
  3156.     CL = 90h
  3157.     DS:DX -> process descriptor in calling process' system memory area
  3158.         (see #04026)
  3159. Return: AX = status
  3160. Notes:    this call can create more than one process if the specied process
  3161.       descriptor's link (next-process) field is nonzero
  3162.     all reserved and unused fields in the process descriptor should be
  3163.       filled with zeros; passing an invalid descriptor or pointer may
  3164.       crash the system because the descriptor is not checked by the OS
  3165.     the newly-created process(es) is always a native process, which can not
  3166.       make DOS calls
  3167. SeeAlso: INT E0/CL=8Fh
  3168. --------O-E0----CL91-------------------------
  3169. INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
  3170.     CL = 91h
  3171.     DL = new priority (00h highest to FFh lowest)
  3172. Return: nothing
  3173. Notes:    sets priority of calling process; transient processes are initialized
  3174.       to priority C8h
  3175.     also supported by REAL/32
  3176. SeeAlso: INT E0/CL=8Eh
  3177. --------O-E0----CL92-------------------------
  3178. INT E0 - ConcCP/M,DR Multiuser DOS - "C_ATTACH" - ATTACH TO DEFAULT CONSOLE
  3179.     CL = 92h
  3180. Return: AX = status
  3181. Notes:    also supported by REAL/32
  3182.     if the console is currently owned by another process, this function
  3183.       waits until the console is available
  3184. SeeAlso: INT E0/CL=93h,INT E0/CL=94h,INT E0/CL=99h,INT E0/CL=9Eh,INT E0/CL=A2h
  3185. --------O-E0----CL93-------------------------
  3186. INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
  3187.     CL = 93h
  3188. Return: AX = status
  3189.         0000h successfully detached
  3190.         FFFFh detach failed
  3191. Note:    also supported by REAL/32
  3192. SeeAlso: INT E0/CL=92h,INT E0/CL=A6h
  3193. --------O-E0----CL94-------------------------
  3194. INT E0 - REAL/32 - "C_SET" - SET PROCESS'S DEFAULT CONSOLE
  3195.     CL = 94h
  3196.     DX = console ID
  3197. Return: AX = status (0000h success, else error code)
  3198. SeeAlso: INT E0/CL=92h,INT E0/CL=95h,INT E0/CL=99h
  3199. --------O-E0----CL95-------------------------
  3200. INT E0 - REAL/32 - "C_ASSIGN" - ASSIGN DEFAULT CONSOLE TO ANOTHER PROCESS
  3201.     CL = 95h
  3202.     DS:DX -> Assign Control Parameter Block (ACPB) (see #04046)
  3203. Return: AX = status
  3204. SeeAlso: INT E0/CL=94h,INT E0/CL=99h
  3205.  
  3206. Format of REAL/32 Assign Control Parameter Block (ACPB):
  3207. Offset    Size    Description    (Table 04046)
  3208.  00h    BYTE    ID of console to assign
  3209.  01h    BYTE    flag: if FFh, new process must have CNS as console for this
  3210.           call to succeed
  3211.  02h    DWORD    -> process descriptor (see #04026) or 00000000h
  3212.  06h  8 BYTEs    name of process to search for if descriptor field above is zero
  3213. --------O-E0----CL96-------------------------
  3214. INT E0 - REAL/32 - "P_CLI" - RUN COMMAND LINE INTERFACE
  3215.     CL = 96h
  3216.     DS:DX -> Command Line Buffer (CLBUF) (see #04047)
  3217. Return: AX = status
  3218. Desc:    execute the indicated command concurrently with the calling process;
  3219.       system queue commands, .BAT, .CMD, .COM, and .EXE files can be
  3220.       executed
  3221. Note:    the calling process will lose its virtual console and must reattach it
  3222.       before attempting any I/O
  3223. SeeAlso: INT E0/CL=92h
  3224.  
  3225. Format of REAL/32 Command Line Buffer (CLBUF):
  3226. Offset    Size    Description    (Table 04047)
  3227.  00h    BYTE    reserved (0)
  3228.  01h 128 BYTEs    ASCIZ command line
  3229.  81h    BYTE    (0)
  3230. --------O-E0----CL99-------------------------
  3231. INT E0 - REAL/32 - "C_GET" - GET DEFAULT CONSOLE
  3232.     CL = 99h
  3233. Return: AX = default console ID
  3234. SeeAlso: INT E0/CL=94h
  3235. --------O-E0----CL9A-------------------------
  3236. INT E0 - REAL/32 - "S_SYSDAT" - GET SYSTEM DATA AREA
  3237.     CL = 9Ah
  3238. Return: ES:AX -> system data area (see #04048)
  3239.     may destroy SI,DI
  3240.  
  3241. Format of REAL/32 system data area:
  3242. Offset    Size    Description    (Table 04048)
  3243.  00h    DWORD    address of supervisor entry point
  3244.  04h 36 BYTEs    reserved
  3245.  28h    DWORD    address of XIOS entry point
  3246.  2Ch    DWORD    address of XIOS initialization point
  3247.  30h  8 BYTEs    reserved
  3248.  38h    DWORD    address of IRET dispatcher entry point
  3249.  3Ch    DWORD    address of RETF dispatcher entry point
  3250.  40h    WORD    segment of operating system code
  3251.  42h    WORD    paragraph address of first Resident System Process (RSP)
  3252.  44h    WORD    paragraph after OS system area
  3253.  46h    BYTE    reserved
  3254.  47h    BYTE    number of system console devices
  3255.  48h    BYTE    number of system list (printer) devices
  3256.  49h    BYTE    number of Character Control blocks
  3257.  4Ah    BYTE    number of system flags
  3258.  4Bh    BYTE    current search disk
  3259.  4Ch    WORD    maximum memory per process
  3260.  4Eh    BYTE    reserved
  3261.  4Fh    BYTE    "dayfile" (flag, true if FFh)
  3262.  50h    BYTE    default disk for temporary files
  3263.  51h    BYTE    system ticks per second (typically 60)
  3264.  52h    WORD    offset of Locked Unused list
  3265.  54h    WORD    offset of CCB table
  3266.  56h    WORD    offset of system flag table
  3267.  58h    WORD    offset of root of Memory Descriptor Unused list
  3268.  5Ah    WORD    offset of Memory Free list
  3269.  5Ch    WORD    offset of Process Unused list
  3270.  5Eh    WORD    offset of Queue Unused list
  3271.  60h  4 WORDs    (no longer used) QMAU
  3272.  68h    WORD    offset of root of Ready List
  3273.  6Ah    WORD    offset of root of Delay List
  3274.  6Ch    WORD    offset of Dispatcher Ready list
  3275.  6Eh    WORD    offset of root of Poll List
  3276.  70h    WORD    reserved
  3277.  72h    WORD    offset of root of Thread List
  3278.  74h    WORD    offset of root of Queue List
  3279.  76h    WORD    offset of Memory Allocation list
  3280.  78h    WORD    segment of version string
  3281.  7Ah    WORD    BDOS version number
  3282.  7Ch    WORD    OS version number
  3283.  7Eh    WORD    number of days since 01jan1978
  3284.  80h    BYTE    current time: hour
  3285.  81h    BYTE    current time: minute
  3286.  82h    BYTE    current time: second
  3287.  83h    BYTE    number of XIOS consoles
  3288.  84h    BYTE    number of XIOS list (printer) devices
  3289.  85h    BYTE    total number of character devices
  3290.  86h    WORD    offset of LCB table
  3291.  88h    WORD    bitmap of open files
  3292.  8Ah    BYTE    maximum locked records per process
  3293.  8Bh    BYTE    maximum open files per process
  3294.  8Ch    WORD    offset of process descriptor for math coprocessor's owner
  3295.  8Eh    WORD    offset of Auxiliary Control Block
  3296.  90h  8 BYTEs    reserved
  3297.  98h    WORD    offset of root Memory Window Descriptor
  3298.  9Ah    WORD    reserved
  3299.  9Ch    BYTE    number of Auxiliary Control Blocks
  3300.  9Dh    BYTE    default search disk
  3301.  9Eh    BYTE    reserved
  3302.  9Fh    BYTE    number of physical consoles
  3303.  A0h    DWORD    address of 8087 interrupt handler
  3304.  A4h    DWORD    address of default 8087 exception handler
  3305.  ...        reserved
  3306. C00h 82 BYTEs    XIOS header structure (see #04049)
  3307.  
  3308. Format of REAL/32 XIOS header structure:
  3309. Offset    Size    Description    (Table 04049)
  3310.  00h  3 BYTEs    XIOS initialization entry point
  3311.  03h  3 BYTEs    XIOS service entry point
  3312.  06h    WORD    segment address of system data
  3313.  08h    DWORD    address of supervisor entry point
  3314.  0Ch    BYTE    set tick flag
  3315.  0Dh    BYTE    ticks per second
  3316.  0Eh    BYTE    global Door Open interrupt flag
  3317.  0Fh    BYTE    number of Auxiliary Control Blocks
  3318.  10h    BYTE    number of physical consoles
  3319.  11h    BYTE    number of virtual consoles
  3320.  12h    BYTE    number of logical consoles
  3321.  13h    BYTE    number of list control blocks
  3322.  14h    WORD    offset of CCB table
  3323.  16h    WORD    offset of LCB table
  3324.  18h 16 WORDs    offsets into DPH for drives A-P
  3325.  38h    WORD    buffer size in paragraphs
  3326.  3Ah    WORD    offset of ACB table
  3327.  3Ch    WORD    used by OEM
  3328.  3Eh    WORD    offset of CCB pointer array
  3329.  40h    WORD    offset of LCB pointer array
  3330.  42h    WORD    offset of ACB pointer array
  3331.  44h    BYTE    'first' flag
  3332.  45h    BYTE    unused
  3333.  46h    WORD    offset of print device support table
  3334.  48h    WORD    offset of aux device support table
  3335.  4Ah    WORD    XIOS extra segment
  3336.  4Ch    WORD    segment of save end address for debug
  3337.  4Eh    WORD    segment of save start address for debug
  3338.  50h    BYTE    number of main virtual console
  3339.  51h    WORD    segment of XIOS code
  3340. SeeAlso: #04048
  3341. --------O-E0----CL9C-------------------------
  3342. INT E0 - REAL/32 - "P_PDADR" - GET ADDRESS OF PROCESS DESCRIPTOR
  3343.     CL = 9Ch
  3344. Return: ES:AX -> caller's process descriptor (see #04026)
  3345.     may destroy SI,DI
  3346. SeeAlso: INT E0/CL=8Fh,INT E0/CL=90h
  3347. --------O-E0----CL9D-------------------------
  3348. INT E0 - REAL/32 - "P_ABORT" - ABORT PROCESS BY NAME OR DESCRIPTOR
  3349.     CL = 9Dh
  3350.     DS:DX -> Abort Parameter Block (see #04050)
  3351. Return: AX = status
  3352.     may destroy SI,DI,DS
  3353. SeeAlso: INT E0/CL=8Fh,INT E0/CL=9Ch
  3354.  
  3355. Format of REAL/32 Abort Parameter Block:
  3356. Offset    Size    Description    (Table 04050)
  3357.  00h    WORD    process descriptor of process to abort, or 0000h
  3358.  02h    WORD    termination code
  3359.  04h    BYTE    default console number
  3360.  05h    BYTE    reserved (0)
  3361.  06h  8 BYTEs    name of process to abort, if descriptor at offset 00h is 0000h
  3362. --------O-E0----CL9E-------------------------
  3363. INT E0 - REAL/32 - "L_ATTACH" - ATTACH TO DEFAULT LIST DEVICE
  3364.     CL = 9Eh
  3365. Return: AX = status
  3366.     may destroy SI,DI
  3367. SeeAlso: INT E0/CL=92h,INT E0/CL=9Fh,INT E0/CL=A0h,INT E0/CL=A1h
  3368. --------O-E0----CL9F-------------------------
  3369. INT E0 - REAL/32 - "L_DETACH" - DETACH FROM DEFAULT LIST DEVICE
  3370.     CL = 9Fh
  3371. Return: AX = status
  3372.     may destroy SI,DI
  3373. SeeAlso: INT E0/CL=92h,INT E0/CL=9Eh
  3374. --------O-E0----CLA0-------------------------
  3375. INT E0 - REAL/32 - "L_SET" - SET DEFAULT LIST DEVICE
  3376.     CL = A0h
  3377.     DX = ID of list (printer) device
  3378. Return: AX = status (0000h success, FFFFh if invalid printer number)
  3379.     may destroy SI,DI
  3380. SeeAlso: INT E0/CL=92h,INT E0/CL=9Eh,INT E0/CL=A4h
  3381. --------O-E0----CLA1-------------------------
  3382. INT E0 - REAL/32 - "L_CATTACH" - CONDITIONALLY ATTACH TO DEFAULT LIST DEVICE
  3383.     CL = A1h
  3384. Return: AX = status (00h = successful, FFh = unable to attach)
  3385.     may destroy SI,DI
  3386. Desc:    attach the default list device to the calling process only if it is
  3387.       currently available
  3388. SeeAlso: INT E0/CL=92h,INT E0/CL=9Eh,INT E0/CL=A0h
  3389. --------O-E0----CLA2-------------------------
  3390. INT E0 - REAL/32 - "C_CATTACH" - CONDITIONALLY ATTACH TO DEFAULT CONSOLE
  3391.     CL = A2h
  3392. Return: AL = status (FFh = console attached to another process)
  3393. Note:    if the console is currently owned by another process, this function
  3394.       will return an error code instead of attaching or waiting
  3395. SeeAlso: INT E0/CL=93h,INT E0/CL=94h,INT E0/CL=99h,INT E0/CL=92h
  3396. --------O-E0----CLA3-------------------------
  3397. INT E0 - ConcCP/M,DR Multiuser DOS,REAL/32 - "S_OSVER" - GET OS VERSION
  3398.     CL = A3h
  3399. Return: AX = operating system version (see #04023) (see also INT 21/AX=4451h)
  3400. SeeAlso: INT E0/CL=0Ch,INT 21/AX=4451h
  3401. --------O-E0----CLA4-------------------------
  3402. INT E0 - REAL/32 - "L_GET" - GET DEFAULT LIST (PRINTER) DEVICE
  3403.     CL = A4h
  3404. Return: AL = number of default list device
  3405. SeeAlso: INT E0/CL=A0h
  3406. --------O-E0----CLA5-------------------------
  3407. INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
  3408.     CL = A5h
  3409. Return: nothing (DR)
  3410.     AX = status (REAL/32)
  3411. Desc:    attaches the default auxiliary device to the calling process unless
  3412.       it is already attached to another process, in which case the call
  3413.       blocks until the device becomes available
  3414. Notes:    this call should be used before attempting to read or write from
  3415.       the AUX device; however, the I/O calls internally call this function
  3416.       to ensure device ownership
  3417.     also supported by REAL/32
  3418. SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
  3419. SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
  3420. --------O-E0----CLA6-------------------------
  3421. INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
  3422.     CL = A6h
  3423. Return: AX = status
  3424.         0000h successfully detached
  3425.         FFFFh detach failed
  3426.     CX = error code
  3427. Note:    also supported by REAL/32
  3428. SeeAlso: INT E0/CL=93h,INT E0/CL=A5h,INT E0/CL=A7h
  3429. --------O-E0----CLA7-------------------------
  3430. INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
  3431.     CL = A7h
  3432. Return: AX = status
  3433.         0000h attached
  3434.         FFFFh unable to attach
  3435. Desc:    attaches the default auxiliary device to the calling process if it is
  3436.       available
  3437. Notes:    does not block if the device is already in use
  3438.     also supported by REAL/32
  3439. SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
  3440. --------O-E0----CLA8-------------------------
  3441. INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
  3442.     CL = A8h
  3443.     DL = auxiliary device number
  3444. Return: AX = status
  3445.         0000h successful
  3446.         FFFFh failed
  3447.     CX = error code
  3448. Desc:    specify which physical device will become AUX
  3449. SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
  3450. --------O-E0----CLA9-------------------------
  3451. INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
  3452.     CL = A9h
  3453. Return: AL = current default auxiliary device number
  3454. Desc:    determine which physical device is currently AUX
  3455. SeeAlso: INT E0/CL=A8h
  3456. --------O-E0----CLAC-------------------------
  3457. INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
  3458.     CL = ACh
  3459.     DS:DX -> character control block (CHCB) (see #04051,#04052)
  3460. Return: AX = number of characters read
  3461. Desc:    read characters from the default auxiliary (AUXn:) device into a buffer
  3462.       until the buffer is full or the device is no longer ready
  3463. Notes:    if the device is initially not ready, blocks until at least one
  3464.       character has been read
  3465.     if another process owns AUX, this call blocks until the device becomes
  3466.       available
  3467.     also supported by REAL/32
  3468. SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh
  3469.  
  3470. Format of DR Multiuser DOS character control block (CHCB):
  3471. Offset    Size    Description    (Table 04051)
  3472.  00h    DWORD    pointer to character buffer
  3473.  04h    WORD    length of character buffer
  3474. Note:    this version of the structure is used by REAL/32 in real mode
  3475. SeeAlso: #04059
  3476.  
  3477. Format of REAL/32 protected-mode Character Control Block (CHCB):
  3478. Offset    Size    Description    (Table 04052)
  3479.  00h    DWORD    32-bit offset of character buffer
  3480.  04h    WORD    selector for character buffer
  3481.  06h    WORD    length of character buffer
  3482. SeeAlso: #04051
  3483. --------O-E0----CLAD-------------------------
  3484. INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
  3485.     CL = ADh
  3486.     DS:DX -> character control block (see #04051,#04052)
  3487. Return: AX = number of characters written
  3488. Notes:    does not return until at least one character has been written
  3489.     also supported by REAL/32
  3490. SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
  3491. --------O-E0----CLB0-------------------------
  3492. INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
  3493.     CL = B0h
  3494.     DX:DX -> AUX device parameter block (see #04053)
  3495. Return: AX = status
  3496.         0000h successful
  3497.         parameter block updated
  3498.         FFFFh failed
  3499.         CX = error code
  3500. Note:    also supported by REAL/32
  3501. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  3502.  
  3503. Format of DR Multiuser DOS AUX device parameter block:
  3504. Offset    Size    Description    (Table 04053)
  3505.  00h    BYTE    function (00h get, 01h set)
  3506.  01h    BYTE    baud rate (see #04055) FFh = don't change/unknown
  3507.  02h    BYTE    parity (see #04054)
  3508.  03h    BYTE    stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
  3509.  04h    BYTE    data bits (05h-08h or FFh unknown/don't change)
  3510.  05h    BYTE    handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
  3511.         FFh unknown/don't change)
  3512.  06h    BYTE    XON character, FFh unknown/don't change
  3513.  07h    BYTE    XOFF character, FFh unknown/don't change
  3514.  
  3515. (Table 04054)
  3516. Values for DR Multiuser DOS AUX parity:
  3517.  00h    none
  3518.  01h    odd
  3519.  02h    none
  3520.  03h    even
  3521.  04h    stick parity bit
  3522.  FFh    don't change/unknown
  3523. SeeAlso: #04053,#04055
  3524.  
  3525. (Table 04055)
  3526. Values for DR Multiuser DOS AUX baud rate:
  3527.  00h    50 baud
  3528.  01h    62.5 baud
  3529.  02h    75 baud
  3530.  03h    110 baud
  3531.  04h    134.5 baud
  3532.  05h    150 baud
  3533.  06h    200 baud
  3534.  07h    300 baud
  3535.  08h    600 baud
  3536.  09h    1200 baud
  3537.  0Ah    1800 baud
  3538.  0Bh    2000 baud
  3539.  0Ch    2400 baud
  3540.  0Dh    3600 baud
  3541.  0Eh    4800 baud
  3542.  0Fh    7200 baud
  3543.  10h    9600 baud
  3544.  11h    19200 baud
  3545.  12h    38400 baud
  3546.  13h    56000 baud
  3547.  14h    76800 baud
  3548.  15h    115200 baud
  3549. SeeAlso: #04053,#04054
  3550. --------O-E0----CLB1-------------------------
  3551. INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
  3552.     CL = B1h
  3553.     DS:DX -> AUX device control block (see #04056)
  3554. Return: AX = status
  3555.         0000h successful
  3556.         control block updated
  3557.         FFFFh failed
  3558.         CX = error code
  3559. Note:    also supported by REAL/32
  3560. SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h
  3561.  
  3562. Format of DR Multiuser DOS AUX device control block:
  3563. Offset    Size    Description    (Table 04056)
  3564.  00h    BYTE    function (00h get, 01h set)
  3565.  01h    BYTE    DTR state (00h low, 01h high, FFh unknown/don't change)
  3566.  02h    BYTE    RTS state (00h low, 01h high, FFh unknown/don't change)
  3567.  03h    BYTE    DSR state (00h low, 01h high, FFh unknown/don't change)
  3568.  04h    BYTE    CTS state (00h low, 01h high, FFh unknown/don't change)
  3569.  05h    BYTE    DCD state (00h low, 01h high, FFh unknown/don't change)
  3570.  06h    BYTE    RI state (00h inactive, 01h active, FFh unknown/don't change)
  3571. --------O-E0----CLB2-------------------------
  3572. INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
  3573.     CL = B2h
  3574.     DX = duration of break in system ticks (0001h-FFFFh)
  3575. Return: AX = status
  3576.         0000h successful
  3577.         break signal completed
  3578.         FFFFh failed
  3579.         CX = error code
  3580. Notes:    if the AUX device is currently owned by another process, this call will
  3581.       block until the device becomes available
  3582.     also supported by REAL/32
  3583. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  3584. --------O-E0----CLB3-------------------------
  3585. INT E0 R - REAL/32 - "MP_ALLOC" - ALLOCATE PHYSICAL MEMORY
  3586.     CL = B3h
  3587.     DX = number of 4K pages to allocate
  3588. Return: AX = number of first 4K page allocated, or FFFFh on error
  3589. Note:    memory allocated with this function is not automatically freed when
  3590.       the process terminates
  3591. SeeAlso: INT E0/CL=B4h,INT E0/CL=B5h
  3592. --------O-E0----CLB4-------------------------
  3593. INT E0 R - REAL/32 - "MP_FREE" - DEALLOCATE PHYSICAL MEMORY
  3594.     CL = B4h
  3595.     DX = number of the physical page to free
  3596. Return: AX = status (0000h successful, FFFFh error)
  3597. SeeAlso: INT E0/CL=B3h
  3598. --------O-E0----CLB5-------------------------
  3599. INT E0 R - REAL/32 - "MP_MAP" - MAP PHYSICAL MEMORY
  3600.     CL = B5h
  3601.     DS:DX -> Memory Physical Parameter Block (see #04057)
  3602. Return: AX = status (0000h successful, FFFFh error)
  3603.     may destroy SI,DI,DS
  3604. SeeAlso: INT E0/CL=B3h
  3605.  
  3606. Format of REAL/32 Memory Physical Parameter Block:
  3607. Offset    Size    Description    (Table 04057)
  3608.  00h    WORD    4K page number in first megabyte to be mapped
  3609.  02h    WORD    number of page to map into above page, or 0000h to unmap
  3610.  04h    WORD    window number (0000h, as only one window currently supported)
  3611.  06h    WORD    reserved
  3612. Note:    all users of the system share the window, so applications should not
  3613.       use it for arguments to system calls, attempt to read/write to/from
  3614.       files via the window, etc.
  3615. --------O-E0----CLB6-------------------------
  3616. INT E0 - REAL/32 - "Q_NCREAD" - CONDITIONALLY NONDESTRUCTIVELY READ QUEUE
  3617.     CL = B6h
  3618.     DS:DX -> Queue Parameter Block (QPB) (see #04045,#04044)
  3619. Return: AX = status
  3620. SeeAlso: INT E0/CL=89h,INT E0/CL=8Ah
  3621. --------O-E0----CLB7-------------------------
  3622. INT E0 - REAL/32 - "DEV_TWAITFLAG" - TIMED WAIT ON SYSTEM FLAG
  3623.     CL = B7h
  3624.     DS:DX -> Flag Parameter Block (FPB) (see #04058)
  3625. Return: AX = status
  3626.     may destroy SI,DI,DS
  3627. Note:    if the flag was already set, this function returns immediately
  3628. SeeAlso: INT E0/CL=84h,INT E0/CL=85h
  3629.  
  3630. Format of REAL/32 Flag Parameter Block (FPB):
  3631. Offset    Size    Description    (Table 04058)
  3632.  00h    WORD    number of system flag on which to wait
  3633.  02h    WORD    maximum number of system ticks (see INT E0/CL=9Ah) to wait
  3634. --------O-E0----CLB8-------------------------
  3635. INT E0 - REAL/32 - "DEV_MAP" - GET/SET SERIAL/PARALLEL PORT MAPPINGS
  3636.     CL = B8h
  3637.     DS:DX -> Device Map Parameter Block (DEVPB) (see #04059)
  3638. Return: nothing???
  3639.     may destroy SI,DI,DS
  3640.  
  3641. Format of REAL/32 Device Map Parameter Block (DEVPB):
  3642. Offset    Size    Description    (Table 04059)
  3643.  00h    WORD    direction (00h = get current mapping, 01h = set new mapping)
  3644.  02h  4 BYTEs    physical device IDs which map into LPT1 - LPT4
  3645.  06h  4 BYTEs    physical device IDs which map into COM1 - COM4
  3646. Note:    LPT4 and COM3/COM4 are reserved on early versions of Multiuser DOS,
  3647.       but are supported from at least CCI Multiuser DOS v7.22 onward
  3648. --------O-E0----CLB9-------------------------
  3649. INT E0 - REAL/32 - "L_TIMEOUT" - SET LIST DEVICE TIMEOUT
  3650.     CL = B9h
  3651.     DX = timeout value in system ticks (see #04048)
  3652.         0000h-FFEFh = new number of system ticks
  3653.         FFFDh = get current value without changing
  3654.         FFFEh = start timeout count
  3655.         FFFFh = never timeout
  3656. Return: AX = status, or current timeout value if DX=FFFDh on entry
  3657.     may destroy SI,DI
  3658. SeeAlso: INT E0/CL=BAh
  3659. --------O-E0----CLBA-------------------------
  3660. INT E0 - REAL/32 - "A_TIMEOUT" - SET AUX DEVICE TIMEOUT
  3661.     CL = BAh
  3662.     DX = timeout value in system ticks (see #04048)
  3663.         0000h-FFEFh = new number of system ticks
  3664.         FFFDh = get current value without changing
  3665.         FFFEh = start timeout count
  3666.         FFFFh = never timeout
  3667. Return: AX = status, or current timeout value if DX=FFFDh on entry
  3668.     may destroy SI,DI
  3669. SeeAlso: INT E0/CL=B9h
  3670. --------O-E0----CLBD-------------------------
  3671. INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
  3672.     CL = BDh
  3673.     DX = delay in system ticks (typically 16.6 ms/tick)
  3674. Return: after the delay elapses
  3675.     no results
  3676. Notes:    the length of a system tick is installation-dependent (typically
  3677.       1/50 or 1/60 second); the length may be determined by reading the
  3678.       TICKSPERSEC value from the system data segment
  3679.     the actual delay before the process is rescheduled to run may be up to
  3680.       one tick longer than requested; the delay between rescheduling and
  3681.       actual execution cannot be predicted if higher-priority processes
  3682.       are awaiting a turn at the CPU
  3683. SeeAlso: INT 15/AH=86h,INT 1A/AX=FF01h,INT 2F/AX=1224h,INT 62/AX=0096h
  3684. --------g-E00000-----------------------------
  3685. INT E0 - PCROBOTS v1.41 - "SWAPTASK" - END CURRENT ROBOT'S TURN
  3686.     AX = 0000h
  3687. Return: nothing
  3688. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3689.       which specially-written .COM or .EXE programs form robots battling
  3690.       each other in a user-defined arena
  3691. --------g-E00001-----------------------------
  3692. INT E0 - PCROBOTS v1.41 - "MOVEMENT" - START MOVING
  3693.     AX = 0001h
  3694.     BX = speed (0-maximum for robot)
  3695.     CX = direction (0-359 degrees)
  3696. Return: nothing
  3697. Notes:    the speed will change to the specified value at the maximum
  3698.       acceleration the robot is capable of; if the robot is already moving
  3699.       faster than its maximum maneuverability speed, it will not be able
  3700.       to change direction
  3701.     this call also terminates the current robot's turn
  3702. SeeAlso: AX=0000h,AX=0002h,AX=0003h
  3703. --------g-E00002-----------------------------
  3704. INT E0 - PCROBOTS v1.41 - "SCAN" - SCAN FOR OTHER ROBOTS IN THE GIVEN DIRECTION
  3705.     AX = 0002h
  3706.     BX = direction (0-359 degrees)
  3707.     CX = resolution (0-45 degrees)
  3708. Return: AX = status
  3709.         FFFFh if nothing detected
  3710.         else robot ID (0-19)
  3711.         BX = range to detected robot
  3712. Notes:    the scan searches within CX degrees to either side of the specified
  3713.       direction
  3714.     the scanner will see right through walls, but shells will not pass
  3715.       through walls
  3716.     this call also terminates the current robot's turn
  3717. SeeAlso: AX=0000h,AX=0001h,AX=0003h
  3718. --------g-E00003-----------------------------
  3719. INT E0 - PCROBOTS v1.41 - "SHOOT" - FIRE A SHELL AT ANOTHER ROBOT
  3720.     AX = 0003h
  3721.     BX = direction (0-359 degrees)
  3722.     CX = range (0-700)
  3723. Return: AX = status (0000h not fired, else ID of shell fired)
  3724. Notes:    up to seven shells may be in flight for a robot at one time; the cannon
  3725.       takes 50 ticks to reload
  3726.     this call also terminates the current robot's turn
  3727. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=002Ch
  3728. --------g-E00010-----------------------------
  3729. INT E0 - PCROBOTS v1.41 - "GETXY" - GET ROBOT'S CURRENT POSITION
  3730.     AX = 0010h
  3731. Return: BX = current X coordinate (0-999)
  3732.     CX = current Y coordinate (0-999)
  3733. --------g-E00011-----------------------------
  3734. INT E0 - PCROBOTS v1.41 - "TRANSMIT" - SEND DATA TO ANOTHER ROBOT
  3735.     AX = 0011h
  3736.     BX = target robot ID
  3737.     CX = data to be sent
  3738. Return: AX = status (0000h data could not be sent, 0001h data sent)
  3739. Note:    this call costs one unit of battery power
  3740. --------g-E00012-----------------------------
  3741. INT E0 - PCROBOTS v1.41 - "RECEIVE" - GET DATA FROM OTHER ROBOTS
  3742.     AX = 0012h
  3743. Return: AX = status
  3744.         0000h no data available
  3745.         0001h data retrieved
  3746.         BX = sender's ID
  3747.         CX = data
  3748. Note:    each robot has a 20-word receive FIFO; if the FIFO is full, other
  3749.       robots will be unable to send more data until some is read
  3750. --------g-E00013-----------------------------
  3751. INT E0 - PCROBOTS v1.41 - "DAMAGE" - DETERMINE HOW MUCH DAMAGE SUSTAINED
  3752.     AX = 0013h
  3753. Return: BX = damage status
  3754. Note:    the initial value depends on configuration, but is typically 100; as
  3755.       the robot is damaged, it decreases
  3756. --------g-E00014-----------------------------
  3757. INT E0 - PCROBOTS v1.41 - "SPEED" - DETERMINE HOW FAST ROBOT IS MOVING
  3758.     AX = 0014h
  3759. Return: BX = current speed
  3760. --------g-E00015-----------------------------
  3761. INT E0 - PCROBOTS v1.41 - "BATTERY" - DETERMINE HOW MUCH BATTERY POWER LEFT
  3762.     AX = 0015h
  3763. Return: BX = current battery charge
  3764. Note:    the battery starts off with 1000 units of charge, and is constantly
  3765.       being charged by solar panels and constantly discharged by motion;
  3766.       the battery is charged at 4 units per turn and discharged at
  3767.       0.1*speed units per turn.
  3768. --------g-E00016-----------------------------
  3769. INT E0 - PCROBOTS v1.41 - "TICKS" - DETERMINE HOW LONG SINCE GAME STARTED
  3770.     AX = 0016h
  3771. Return: BX:CX = number of game ticks elapsed (not related to real time)
  3772. --------g-E00017-----------------------------
  3773. INT E0 - PCROBOTS v1.41 - "L_SIN" - GET SCALED SINE OF AN ANGLE
  3774.     AX = 0017h
  3775.     BX = angle (0-359 degrees)
  3776. Return: BX:CX = 100000*sine of angle
  3777. SeeAlso: AX=0018h,AX=0019h,AX=001Ah,AX=001Bh
  3778. --------g-E00018-----------------------------
  3779. INT E0 - PCROBOTS v1.41 - "L_COS" - GET SCALED COSINE OF AN ANGLE
  3780.     AX = 0018h
  3781.     BX = angle (0-359 degrees)
  3782. Return: BX:CX = 100000*cosine of angle
  3783. SeeAlso: AX=0017h,AX=0019h,AX=001Ah
  3784. --------g-E00019-----------------------------
  3785. INT E0 - PCROBOTS v1.41 - "L_TAN" - GET SCALED TANGENT OF AN ANGLE
  3786.     AX = 0019h
  3787.     BX = angle (0-359 degrees)
  3788. Return: BX:CX = 100000*tangent of angle
  3789. SeeAlso: AX=0017h,AX=0018h,AX=001Ah
  3790. --------g-E0001A-----------------------------
  3791. INT E0 - PCROBOTS v1.41 - "L_ATAN" - GET ANGLE GIVEN SCALED TANGENT
  3792.     AX = 001Ah
  3793.     BX:CX = 100000*tangent of an angle
  3794. Return: AX = angle (-90 to +90 degrees)
  3795. SeeAlso: AX=0017h,AX=0018h,AX=0019h
  3796. --------g-E0001B-----------------------------
  3797. INT E0 - PCROBOTS v1.41 - "SQRT" - DETERMINE SQUARE ROOT OF A NUMBER
  3798.     AX = 001Bh
  3799.     BX:CX = value
  3800. Return: BX:CX = square root
  3801. SeeAlso: AX=0017h
  3802. --------g-E0001C-----------------------------
  3803. INT E0 - PCROBOTS v1.41 - "SET_PATTERN" - SPECIFY ROBOT'S DISPLAY IMAGE
  3804.     AX = 001Ch
  3805.     BX:CX -> pattern array
  3806. Return: nothing
  3807. Note:    the pattern array consists of five bytes, the low five bits of each
  3808.       specifying the bit pattern for one line of the robot's screen display
  3809. --------g-E0001D-----------------------------
  3810. INT E0 - PCROBOTS v1.41 - "DEBUG_FLAG" - SET/CLEAR MARKERS NEXT TO ROBOT'S NAME
  3811.     AX = 001Dh
  3812.     BX = flag number (0 or 1)
  3813.     CX = new value (0 reset, 1 set)
  3814. Return: nothing
  3815. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3816.       which specially-written .COM or .EXE programs form robots battling
  3817.       each other in a user-defined arena
  3818. Note:    the two flag markers may be used for any purpose, typically for
  3819.       debugging to provide a visual display of progress
  3820. --------g-E0001E-----------------------------
  3821. INT E0 - PCROBOTS v1.41 - "BUY_ARMOUR" - BUY OR SELL ARMOR FOR ROBOT
  3822.     AX = 001Eh
  3823.     BX = number of armor units to buy (negative to sell)
  3824. Return: nothing
  3825. Note:    each armor unit is worth 50 battery units; the robot's armor rating
  3826.       will not go above its initial rating, so attempts to purchase more
  3827.       will waste battery units
  3828. SeeAlso: AX=001Fh
  3829. --------g-E0001F-----------------------------
  3830. INT E0 - PCROBOTS v1.41 - "BUY_SHELLS" - BUY ADDITIONAL CANNON SHELLS
  3831.     AX = 001Fh
  3832.     BX = number of shells to buy
  3833. Return: nothing
  3834. Note:    each shell costs ten battery units
  3835. SeeAlso: AX=001Eh,AX=0020h
  3836. --------g-E00020-----------------------------
  3837. INT E0 - PCROBOTS v1.41 - "SHELLS LEFT" - DETERMINE HOW MANY SHELLS ROBOT HAS
  3838.     AX = 0020h
  3839. Return: BX = number of shells remaining
  3840. SeeAlso: AX=001Fh
  3841. --------g-E00021-----------------------------
  3842. INT E0 - PCROBOTS v1.41 - "GET LOCAL MAP"
  3843.     AX = 0021h
  3844.     BX:CX -> 81-byte buffer for map (see #04060)
  3845. Return: buffer filled with 9x9 area of map centered on robot's position
  3846.  
  3847. (Table 04060)
  3848. Values for PCROBOTS map squares:
  3849.  2Eh '.' empty square
  3850.  44h 'D' damaging trap
  3851.  52h 'R' refueling point
  3852.  58h 'X' wall
  3853. --------g-E00022-----------------------------
  3854. INT E0 - PCROBOTS v1.41 - "INVISIBILITY" - CONTROL ROBOT'S INVISIBILITY DEVICE
  3855.     AX = 0022h
  3856.     BX = new state (0000h become visible, 0001h become invisible)
  3857. Return: nothing
  3858. Notes:    this function has no effect if the robot is not capable of invisibility
  3859.     the robot can only stay invisible for 100 turns, after which it will
  3860.       automatically become visible; it must also be remain visible for
  3861.       as many turns as it was invisible before it can turn invisible
  3862.       again
  3863. SeeAlso: AX=0024h,AX=0080h
  3864. --------g-E00023-----------------------------
  3865. INT E0 - PCROBOTS v1.41 - "GET_SHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  3866.     AX = 0023h
  3867. Return: BX = status of last shell to land
  3868.         0000h missed completely
  3869.         0001h hit a wall
  3870.         0002h hit a robot within 50-square radius
  3871.         0003h hit a robot within 25-square radius
  3872.         0004h hit a robot within 5-square radius
  3873. --------g-E00024-----------------------------
  3874. INT E0 - PCROBOTS v1.41 - "IS_INVISIBLE" - DETERMINE WHETHER ROBOT IS INVISIBLE
  3875.     AX = 0024h
  3876. Return: BX = visibility (0000h visible, 0001h invisible)
  3877. SeeAlso: AX=0022h,AX=0080h
  3878. --------g-E00025-----------------------------
  3879. INT E0 - PCROBOTS v1.41 - "L_ATAN2" - GET ARCTANGENT
  3880.     AX = 0025h
  3881.     BX = Y
  3882.     CX = X
  3883. Return: AX = angle (arctangent of Y/X)
  3884. --------g-E00026-----------------------------
  3885. INT E0 - PCROBOTS v1.41 - "GET_ROBOT_ID" - DETERMINE CURRENT ROBOT'S IDENTIFIER
  3886.     AX = 0026h
  3887. Return: AX = robot ID
  3888. --------g-E00027-----------------------------
  3889. INT E0 - PCROBOTS v1.41 - "REGISTER_IFF" - REGISTER FRIEND/FOE IDENT STRING
  3890.     AX = 0027h
  3891.     BX:CX = ASCIZ IFF string
  3892. Return: nothing
  3893. Note:    the IFF string may only be set once
  3894. SeeAlso: AX=0028h,AX=0029h
  3895. --------g-E00028-----------------------------
  3896. INT E0 - PCROBOTS v1.41 - "CHECK_IFF" - QUERY FRIEND/FOE IDENTIFICATION STRING
  3897.     AX = 0028h
  3898.     BX = robot ID to test
  3899. Return: AX = status
  3900.         0000h IFF strings match
  3901.         0001h IFF strings differ or invalid robot ID
  3902. SeeAlso: AX=0027h
  3903. --------g-E00029-----------------------------
  3904. INT E0 - PCROBOTS v1.41 - "REGISTER_NAME" - SPECIFY ROBOT'S NAME
  3905.     AX = 0029h
  3906.     BX:CX -> ASCIZ name string
  3907. Return: nothing
  3908. Note:    the name may only be set once
  3909. SeeAlso: AX=0027h,AX=002Ah
  3910. --------g-E0002A-----------------------------
  3911. INT E0 - PCROBOTS v1.41 - "FIND_NAME" - SEARCH FOR ROBOT WITH GIVEN NAME
  3912.     AX = 002Ah
  3913.     BX:CX -> ASCIZ name string
  3914.     DX = first ID to check
  3915. Return: AX = robot ID or FFFFh if no robot with specified name
  3916. SeeAlso: AX=0028h,AX=0029h,AX=002Bh
  3917. --------g-E0002B-----------------------------
  3918. INT E0 - PCROBOTS v1.41 - "GET_TEAM_ID" - DETERMINE TEAM MEMBERSHIP OF ROBOT
  3919.     AX = 002Bh
  3920. Return: AX = team ID (0-2) or FFFFh if 'loner'
  3921. SeeAlso: AX=0029h
  3922. --------g-E0002C-----------------------------
  3923. INT E0 - PCROBOTS v1.41 - "GET_ASHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  3924.     AX = 002Ch
  3925.     BX = shell ID
  3926. Return: AX = status
  3927.         0000h missed completely
  3928.         0001h hit a wall
  3929.         0002h hit a robot within a 50-square radius
  3930.         0003h hit a robot within a 25-square radius
  3931.         0004h hit a robot within a 5-square radius
  3932.         0005h shell not known (too old or not yet fired)
  3933.         0006h shell still in flight
  3934. SeeAlso: AX=0003h
  3935. --------g-E0002D-----------------------------
  3936. INT E0 - PCROBOTS v1.41 - "REGISTER_X" - SELECT AUTOMATIC X POSITION UPDATES
  3937.     AX = 002Dh
  3938.     BX:CX -> X word variable
  3939. Return: AX = status (0001h OK, 0000h problem with address)
  3940. Note:    after this call, PCROBOTS will automatically update the specified
  3941.       word whenever the robot moves
  3942. SeeAlso: AX=002Eh
  3943. --------g-E0002E-----------------------------
  3944. INT E0 - PCROBOTS v1.41 - "REGISTER_Y" - SELECT AUTOMATIC Y POSITION UPDATES
  3945.     AX = 002Eh
  3946.     BX:CX -> Y word variable
  3947. Return: AX = status (0001h OK, 0000h problem with address)
  3948. Note:    after this call, PCROBOTS will automatically update the specified
  3949.       word whenever the robot moves
  3950. SeeAlso: AX=002Dh
  3951. --------g-E00080-----------------------------
  3952. INT E0 - PCROBOTS v1.41 - "CONFIGURE" - CUSTOMIZE ROBOT
  3953.     AX = 0080h
  3954.     BX = basic configuration (see #04061)
  3955.     CX = advanced configuration (see #04062)
  3956. Return: AX = status (0001h OK, 0000h not first call in program)
  3957. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3958.       which specially-written .COM or .EXE programs form robots battling
  3959.       each other in a user-defined arena
  3960. Notes:    a maximum of ten points may be allocated to the robot; if you attempt
  3961.       to allocate more, some items will be given a value of zero.  If this
  3962.       function is not called, each attribute is set to the default value
  3963.       of 2.
  3964.     if the invisibility option is chosen, the robot will start with only
  3965.       900 cannon shells instead of the default 1000
  3966.  
  3967. Bitfields for PCROBOTS basic configuration:
  3968. Bit(s)    Description    (Table 04061)
  3969.  0-3    maximum speed (0-4 = 50,75,100,150,200)
  3970.  4-7    maneuverability (0-4 = 20%,35%,50%,75%,100%)
  3971.  8-11    cannon range (0-4 = 300,500,700,1000,1500)
  3972.  12-15    robot armor (0-4 = 50,75,100,150,200)
  3973.  
  3974. Bitfields for PCROBOTS advanced configuration:
  3975. Bit(s)    Description    (Table 04062)
  3976.  0-2    robot acceleration (0-4 = 5,7,10,15,20)
  3977.  3    capable of invisibility
  3978. --------r-E1---------------------------------
  3979. INT E1 - IBM ROM BASIC - used while in interpreter
  3980. Notes:    called by ROM BASIC
  3981.     BASIC.COM/BASICA.COM do not restore vector on termination
  3982. --------N-E1---------------------------------
  3983. INT E1 - PC Cluster Disk Server Information (NOT A VECTOR!)
  3984. Desc:    points at a data table
  3985. SeeAlso: INT E2
  3986. --------O-E1---------------------------------
  3987. INT E1 - MP/M-86, - ALTERNATE CP/M-86 FUNCTION CALLS
  3988.     CL = function number (see #04019,#04020)
  3989.     DS,DX = parameters
  3990. Return: as appropriate for function
  3991.     CX is often the error code (see #04021)
  3992. Desc:    used by some applications which alter CP/M functions while running a
  3993.       child program, to store the original INT E0 vector before
  3994.       intercepting INT E0
  3995. SeeAlso: #04019 at INT E0"CP/M"
  3996. ----------E1---------------------------------
  3997. INT E1 - DeskMate (Tandy) - TASK DATA SEGMENTS (NOT A VECTOR!)
  3998. Desc:    used to store data; the    low word of the vector is the data segment for
  3999.       the first task; the high word is the data segment of the second task
  4000.       (DeskMate supports 2-way task switching between small- or
  4001.       medium-model applications)
  4002. Program: DeskMate is a proprietary GUI from Tandy distributed with several
  4003.       models of the Tandy 1000's, 2500's, 3000's, and laptops.  Retail
  4004.       and runtime versions also exist.  Some Tandy's are designed to
  4005.       boot directly into DeskMate.
  4006. SeeAlso: INT E0"DeskMate"
  4007. --------r-E2---------------------------------
  4008. INT E2 - IBM ROM BASIC - used while in interpreter
  4009. Notes:    called by ROM BASIC
  4010.     BASIC.COM/BASICA.COM do not restore vector on termination
  4011. --------N-E2---------------------------------
  4012. INT E2 - PC Cluster Program - RELOCATED INT 1C
  4013. SeeAlso: INT 1C
  4014. --------r-E3---------------------------------
  4015. INT E3 - IBM ROM BASIC - used while in interpreter
  4016. Notes:    called by ROM BASIC
  4017.     BASIC.COM/BASICA.COM do not restore vector on termination
  4018. --------r-E40005-----------------------------
  4019. INT E4 - Logitech Modula v2.0 - MonitorEntry
  4020.     AX = 0005h
  4021.     BX = priority
  4022. Return: nothing
  4023. SeeAlso: AX=0006h
  4024. --------r-E40006-----------------------------
  4025. INT E4 - Logitech Modula v2.0 - MonitorExit
  4026.     AX = 0006h
  4027. Return: nothing
  4028. SeeAlso: AX=0005h
  4029. --------r-E4---------------------------------
  4030. INT E4 - IBM ROM BASIC - used while in interpreter
  4031. Notes:    called by ROM BASIC
  4032.     BASIC.COM/BASICA.COM do not restore vector on termination
  4033. --------r-E5---------------------------------
  4034. INT E5 - IBM ROM BASIC - used while in interpreter
  4035. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  4036.     BASIC.COM/BASICA.COM do not restore vector on termination
  4037. --------r-E6---------------------------------
  4038. INT E6 - IBM ROM BASIC - used while in interpreter
  4039. Notes:    called by ROM BASIC
  4040.     BASIC.COM/BASICA.COM do not restore vector on termination
  4041. --------O-E6---------------------------------
  4042. INT E6 C - CP/M-86 v1.1 - UNKNOWN DISK DRIVE
  4043.     AX = function which accessed drive
  4044.         0000h SELDSK
  4045.         0001h READ
  4046.         0002h WRITE
  4047.         0003h HOME
  4048.     DX:BX -> parameter block (see #04063)
  4049. Return:    AX = return value
  4050. Desc:    called by CP/M-86 kernel when an unknown disk drive is used, which
  4051.       permits an application to provide access services
  4052.  
  4053. Format of CP/M-86 unknown-drive paramter block:
  4054. Offset    Size    Description    (Table 04063)
  4055.  00h    BYTE    drive number (00h = first unknown drive, etc.)
  4056.  01h    BYTE    deblocking flag (00h = normal write, 01h = directory write)
  4057.  02h    WORD    track number
  4058.  04h    WORD    sector number
  4059.  06h    DWORD    data transfer address
  4060.  0Ah    BYTE    verify flag (nonzero to verify writes)
  4061. Note:    in CP/M-86 v1.1, this is actually a portion of a BIOS disk data
  4062.       table which starts one byte before the address given to the INT E6
  4063.       handler; that extra byte is the current logical drive number
  4064. --------O-E600-------------------------------
  4065. INT E6 - Linux DOSEMU - INSTALLATION CHECK
  4066.     AH = 00h
  4067. Return: AX = AA55h if installed
  4068.         BH = major version number
  4069.         BL = minor version number
  4070.         CX = patchlevel
  4071. Notes:    check for the BIOS date string "02/25/93" at F000:FFF5 before
  4072.       calling this function.  In addition, the segment address of this
  4073.       vector should be F000h (for existing versions of DOSemu, the
  4074.       vector is F000h:0E60h)
  4075. SeeAlso: AH=FFh
  4076. --------O-E601-------------------------------
  4077. INT E6 - Linux DOSEMU - REGISTER DUMP
  4078.     AH = 01h
  4079. Return: nothing
  4080. SeeAlso: AH=00h
  4081. --------O-E602-------------------------------
  4082. INT E6 - Linux DOSEMU - SET I/O PORT PERMISSIONS
  4083.     AH = 02h
  4084.     BX = base I/O port address
  4085.     CX = number of consecutive I/O ports
  4086.     CF set to allow DOS to use ports
  4087.     CF clear if DOS should not be allowed to use ports
  4088. Return: nothing
  4089. SeeAlso: AH=00h
  4090. --------O-E605-------------------------------
  4091. INT E6 - Linux DOSEMU - STARTUP BANNER
  4092.     AH = 05h
  4093. Return: nothing
  4094. SeeAlso: AH=00h
  4095. --------O-E612-------------------------------
  4096. INT E6 - Linux DOSEMU - SET "HOGTHRESHOLD"
  4097.     AH = 12h
  4098.     BX = new "hogthreshold" (00h-99h)
  4099. Return: nothing
  4100. Desc:    specify how much CPU time DOSEMU may use
  4101. SeeAlso: AH=00h
  4102. --------O-E622-------------------------------
  4103. INT E6 - Linux DOSEMU - GET EMS STATUS
  4104.     AH = 22h
  4105. Return: ???
  4106. SeeAlso: AH=00h
  4107. --------O-E630-------------------------------
  4108. INT E6 - Linux DOSEMU - SET BOOTDISK FLAG
  4109.     AH = 30h
  4110.     BX = new flag state (0 = false, 1 = true)
  4111. Return: nothing
  4112. SeeAlso: AH=00h
  4113. --------O-E650-------------------------------
  4114. INT E6 - Linux DOSEMU - EXECUTE UNIX COMMAND
  4115.     AH = 50h
  4116.     ES:DX -> ASCIZ Unix command
  4117. SeeAlso: AH=00h,AH=51h
  4118. --------O-E651-------------------------------
  4119. INT E6 - Linux DOSEMU - EXECUTE DOS COMMAND FROM UNIX
  4120.     AH = 51h
  4121.     ES:DX -> ASCIZ DOS command
  4122. SeeAlso: AH=00h,AH=50h
  4123. --------O-E680-------------------------------
  4124. INT E6 - Linux DOSEMU - GET CURRENT UNIX DIRECTORY
  4125.     AH = 80h
  4126. Return: ES:DX -> current Unix directory
  4127.     AX = length of current directory name
  4128. SeeAlso: AH=00h,AH=81h
  4129. --------O-E681-------------------------------
  4130. INT E6 - Linux DOSEMU - CHANGE CURRENT UNIX DIRECTORY
  4131.     AH = 81h
  4132.     ES:DX -> ASCIZ directory name
  4133. Return: nothing
  4134. SeeAlso: AH=00h,AH=80h
  4135. --------O-E6FF-------------------------------
  4136. INT E6 - Linux DOSEMU - TERMINATE
  4137.     AH = FFh
  4138. SeeAlso: AH=00h
  4139. --------r-E7---------------------------------
  4140. INT E7 - IBM ROM BASIC - used while in interpreter
  4141. Notes:    called by ROM BASIC
  4142.     BASIC.COM/BASICA.COM do not restore vector on termination
  4143. --------r-E8---------------------------------
  4144. INT E8 - IBM ROM BASIC - used while in interpreter
  4145. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  4146.     BASIC.COM/BASICA.COM do not restore vector on termination
  4147. --------r-E9---------------------------------
  4148. INT E9 - IBM ROM BASIC - used while in interpreter
  4149. Notes:    called by ROM BASIC
  4150.     BASIC.COM/BASICA.COM do not restore vector on termination
  4151. --------r-EA---------------------------------
  4152. INT EA - IBM ROM BASIC - used while in interpreter
  4153. Notes:    called by ROM BASIC
  4154.     BASIC.COM/BASICA.COM do not restore vector on termination
  4155. --------r-EB---------------------------------
  4156. INT EB - IBM ROM BASIC - used while in interpreter
  4157. Notes:    called by ROM BASIC
  4158.     BASIC.COM/BASICA.COM do not restore vector on termination
  4159. --------r-EC---------------------------------
  4160. INT EC - IBM ROM BASIC - used while in interpreter
  4161. Notes:    called by ROM BASIC
  4162.     BASIC.COM/BASICA.COM do not restore vector on termination
  4163. --------N-EC---------------------------------
  4164. INT EC - used by Alloy NTNX
  4165. --------r-EC---------------------------------
  4166. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  4167.     AX = function number (0000h to 0140h)
  4168.     STACK:    DWORD address to return to
  4169.         any arguments required by function
  4170. Return: STACK:    return address popped, but otherwise unchanged
  4171. Desc:    this is the interface from applications to the runtime system by Exact
  4172.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  4173.       it can provide DLL-style capabilities under MS-DOS.
  4174. Note:    the interrupt handler removes the return address and flags placed on
  4175.       the stack by the INT EC, then jumps to the appropriate function
  4176. --------r-ED---------------------------------
  4177. INT ED - IBM ROM BASIC - used while in interpreter
  4178. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  4179.     BASIC.COM/BASICA.COM do not restore vector on termination
  4180.     INT 80 through INT ED are modified but not restored by Direct Access
  4181.       v4.0, and may be left dangling by other programs written with the
  4182.       same version of compiled BASIC
  4183. SeeAlso: INT EC"BASIC",INT EE"BASIC"
  4184. --------r-EE---------------------------------
  4185. INT EE - IBM ROM BASIC - used while in interpreter
  4186. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  4187.     BASIC.COM/BASICA.COM do not restore vector on termination
  4188. SeeAlso: INT ED"BASIC",INT EE"BASIC"
  4189. --------r-EF---------------------------------
  4190. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  4191. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  4192. SeeAlso: INT EE"BASIC",INT F0"BASIC"
  4193. --------O-EF----CX00C8-----------------------
  4194. INT EF - GEM - AES INTERFACE
  4195.     CX = 00C8h
  4196.     DX = 0000h
  4197.     ES:BX -> AES parameter block (see #04064)
  4198. SeeAlso: INT EF/CX=00C9h,INT EF/CX=0473h
  4199.  
  4200. Format of AES parameter block:
  4201. Offset    Size    Description    (Table 04064)
  4202.  00h    DWORD    -> control array (see #04065)
  4203.  04h    DWORD    -> global variables (15 WORDs)
  4204.  08h    DWORD    -> integer input parameters
  4205.  0Ch    DWORS    -> buffer for integer results
  4206.  10h    DWORD    -> address (DWORD) input parameters
  4207.  14h    DWORD    -> buffer for address (DWORD) results
  4208. SeeAlso: #04066
  4209.  
  4210. Format of AES control array:
  4211. Offset    Size    Description    (Table 04065)
  4212.  00h    WORD    function number (000Ah-0084h)
  4213.  02h    WORD    number of words of integer input parameters
  4214.  04h    WORD    number of words available for integer results
  4215.  06h    WORD    number of words of address input parameters
  4216.  08h    WORD    number of words available for address results
  4217. SeeAlso: #04064
  4218. --------O-EF----CX00C9-----------------------
  4219. INT EF - GEM - AES INTERFACE
  4220.     CX = 00C9h
  4221.     DX = 0000h
  4222.     ES:BX -> AES parameter block (see #04064)
  4223. SeeAlso: INT EF/CX=00C8h,INT EF/CX=0473h
  4224. --------O-EF----CX0473-----------------------
  4225. INT EF - GEM - VDI INTERFACE
  4226.     CX = 0473h
  4227.     DS:DX -> GEM VDI parameter block (see #04066)
  4228. Note:    if installed, one of the following ASCII signatures will appear two
  4229.       bytes after the INT EF entry point:
  4230.         "GEMVDI"    GEM VDI (but not AES) is present
  4231.         "GEMAES"    GEM/ViewMAX VDI and AES are both present
  4232.         "ViewMAX"    ViewMAX VDI (only) is present
  4233.       each of the above is followed by an ASCIZ number indicating the
  4234.       version ("10" for GEM/1 AES and VDI; "20" for GEM/2,GEM/3,ViewMAX
  4235.       AES and GEM/2 VDI; "23" for GEM/3 VDI; and "1" for ViewMAX VDIs)
  4236. SeeAlso: INT EF/CX=00C8h,INT EF/CX=00C9h
  4237. Index:    installation check;GEM
  4238.  
  4239. Format of VDI parameter block:
  4240. Offset    Size    Description    (Table 04066)
  4241.  00h    DWORD    -> control array (see #04067)
  4242.  08h    DWORD    -> integer parameters
  4243.  0Ch    DWORD    -> (x,y) pair parameters
  4244.  10h    DWORD    -> integer results
  4245.  14h    DWORD    -> (x,y) pair results
  4246. SeeAlso: #04064
  4247.  
  4248. Format of VDI control array:
  4249. Offset    Size    Description    (Table 04067)
  4250.  00h    WORD    (call) function number (0001h-0084h)
  4251.  02h    WORD    (call) number of words of pair parameters
  4252.  04h    WORD    (ret) number of words of pair results
  4253.  06h    WORD    (call) number of words of integer parameters
  4254.  08h    WORD    (ret) number of words of integer results
  4255.  0Ah    WORD    subfunction number
  4256.  0Ch    WORD    graphics handle
  4257.  0Eh    DWORD    (call) -> pointer parameter
  4258.  12h    DWORD    (ret) -> pointer result
  4259. SeeAlso: #04066
  4260. --------r-F0---------------------------------
  4261. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  4262. Note:    BASICA.COM does not restore vector on termination
  4263. SeeAlso: INT EF"BASIC"
  4264. --------*-F1---------------------------------
  4265. INT F1 - reserved for user interrupt
  4266. --------s-F1---------------------------------
  4267. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  4268.     DS:BX -> '$'-terminated text string
  4269. Return: nothing
  4270. Program: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  4271. --------s-F1---------------------------------
  4272. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  4273. SeeAlso: INT F2"SPEECH"
  4274. --------U-F1---------------------------------
  4275. INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
  4276. Return: AX:BX -> data area
  4277. Program: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
  4278.       and COM2 in software
  4279. Note:    The installation check consists of testing for the following signature
  4280.       immediately preceding the interrupt handler: "JWBtvv" where 't' is
  4281.       either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
  4282.       version number
  4283. Index:    installation check;AQUEDUCT|installation check;PIPELINE
  4284. --------N-F1---------------------------------
  4285. INT F1 - NetWare Remote Boot - INSTALLATION CHECK (NOT A VECTOR!)
  4286. Note:    if this vector contains the value 5774654Eh ("NetW"), the remote boot
  4287.       BIOS extension is active, and access to the floppy disk is redirected
  4288.       to an image file in the server's SYS:LOGIN directory
  4289. SeeAlso: INT F2"NetWare",INT F3"NetWare",INT F4"NetWare"
  4290. --------v-F1---------------------------------
  4291. INT F1 - VIRUS - "Violetta" - ???
  4292. Note:    used but not chained by virus
  4293. SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
  4294. ----------F101-------------------------------
  4295. INT F1 - Common ISDN API (CAPI) v1.1 - "API-REGISTER" - INITIALIZE CAPI
  4296.     AH = 01h
  4297.     ES:BX -> buffer for CAPI's use (refer to note below)
  4298.     CX = minimum number of pending messages
  4299.     DX = maximum simultaneous Level 3 connections
  4300.     SI = maximum concurrent received B3 data blocks
  4301.     DI = maximum B3 data block size
  4302. Return: AX = CAPI-assigned application ID
  4303.         0000h on error
  4304.         BX = error number
  4305.             1001h registration error
  4306. Range:    INT 00 to INT FF, selectable by program parameter
  4307. Notes:    the caller is required to provide at least 512 bytes of stack space
  4308.     the CAPI interrupt handler begins with a header which is nearly
  4309.       identical to the IBM Interrupt Sharing Protocol header
  4310.       (see #02568 at INT 2D"AMIS"), except that the short jump instruction
  4311.       to a hardware reset handler at offset 09h is replaced by the
  4312.       signature bytes "IA"
  4313.     the maximum length of a message is fixed at 180 bytes; the standard
  4314.       document suggests using CX=10, DI=1, SI=7, and DI=130 for
  4315.       applications which use only a single connection and standard
  4316.       protocols
  4317.     the total size of the application-provided buffer must be at least
  4318.       180*CX + DX*SI*DI bytes
  4319. SeeAlso: AH=02h,INT F1/AL=01h
  4320. Index:    installation check;Common ISDN API
  4321. ----------F1--01-----------------------------
  4322. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_REGISTER" - INITIALIZE CAPI
  4323.     AL = 01h
  4324.     AH = CAPI version number * 10 (14h for v2.0)
  4325.     ES:BX -> buffer for CAPI's use (refer to note below)
  4326.     CX = number of bytes for message buffer
  4327.     DX = maximum simultaneous logical (Level 3) connections
  4328.     SI = maximum concurrent received B3 data blocks (min. 2)
  4329.     DI = maximum B3 data block size (up to 2048 bytes)
  4330. Return: AX = CAPI-assigned application ID
  4331.         0000h on error
  4332.         BX = error number
  4333.             1001h registration error
  4334. Range:    INT 00 to INT FF, selectable by program parameter
  4335. Notes:    the caller is required to provide at least 512 bytes of stack space
  4336.     the CAPI interrupt handler begins with a header (see #04068) which is
  4337.       nearly identical to the IBM Interrupt Sharing Protocol header
  4338.       (see #02568 at INT 2D"AMIS"), except that the short jump instruction
  4339.       to a hardware reset handler at offset 09h is zeroed out and the
  4340.       entire header is inexplicably shortened by one byte
  4341.     the standard document suggests using 1024 + (1024*DX) bytes for the
  4342.       message buffer for typical applications
  4343.     the total size of the application-provided buffer must be at least
  4344.       CX + DX*SI*DI bytes
  4345. SeeAlso: AH=01h,INT F1/AL=02h
  4346. Index:    installation check;Common ISDN API
  4347.  
  4348. Format of CAPI v2.0 interrupt handler entry point:
  4349. Offset    Size    Description    (Table 04068)
  4350.  00h  2 BYTEs    short jump to actual start of interrupt handler, immediately
  4351.           following this data block (EBh 0Fh)
  4352.  02h    DWORD    address of next handler in chain
  4353.  06h    WORD    signature 424Bh
  4354.  08h    BYTE    EOI flag (80h)
  4355.         80h primary hardware interrupt handler (will issue EOI)
  4356.  09h  2 BYTEs    reserved (0)
  4357.         (is short jump to hardware reset routine in ISP header)
  4358.  0Bh  4 BYTEs    signature "CAPI"
  4359.  0Fh  2 BYTEs    two-digit CAPI version number in ASCII ('20')
  4360. SeeAlso: #02568 at INT 2D
  4361. ----------F102-------------------------------
  4362. INT F1 - Common ISDN API (CAPI) v1.1 - "API-RELEASE" - UNREGISTER FROM CAPI
  4363.     AH = 02h
  4364.     DX = application ID (see AH=01h)
  4365. Return: AX = status (0000h,1002h) (see #04069)
  4366. Notes:    the caller is required to provide at least 512 bytes of stack space
  4367. SeeAlso: AH=01h,INT F1/AL=02h
  4368.  
  4369. (Table 04069)
  4370. Values for CAPI v1.1 error code:
  4371.  0000h    successful
  4372.  1001h    registration error
  4373.  1002h    invalid application ID
  4374.  1003h    message too small or incorrectly coded message number
  4375.  1004h    invalid command or subcommand
  4376.  1005h    message queue full
  4377.  1006h    message queue empty
  4378.  1007h    message(s) lost due to queue overflow
  4379.  1008h    error uninstalling
  4380. SeeAlso: #04070
  4381. ----------F1--02-----------------------------
  4382. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_RELEASE" - UNREGISTER FROM CAPI
  4383.     AL = 02h
  4384.     AH = CAPI version number * 10 (14h for v2.0)
  4385.     DX = application ID (see INT F1/AL=01h)
  4386. Return: AX = status (0000h,11xxh) (see #04070)
  4387. Notes:    the caller is required to provide at least 512 bytes of stack space
  4388. SeeAlso: AH=02h,INT F1/AL=01h,INT F1/AL=03h
  4389.  
  4390. (Table 04070)
  4391. Values for CAPI v2.0 error code:
  4392.  0000h    successful
  4393.  1001h    too many applications
  4394.  1002h    logical block size too small (must be at least 128 bytes)
  4395.  1003h    buffer > 64K
  4396.  1004h    message buffer too small (minimum 1024 bytes)
  4397.  1005h    too many logical connections requested
  4398.  1006h    reserved
  4399.  1007h    could not register because CAPI busy, try again
  4400.  1008h    OS resource unavailable (out of memory, etc.)
  4401.  1009h    COMMON-ISDN-API not installed
  4402.  100Ah    controller does not support external equipment
  4403.  100Bh    controller supports only external equipment
  4404.  1101h    invalid application ID
  4405.  1102h    illegal command or subcommand, or message too short
  4406.  1103h    message queue full
  4407.  1104h    queue empty
  4408.  1105h    queue overflowed (message lost)
  4409.  1106h    unknown notification parameter
  4410.  1107h    could not accept message because CAPI busy, try again
  4411.  1108h    OS resource unavailable (out of memory, etc.)
  4412.  1109h    COMMON-ISDN-API not installed
  4413.  110Ah    controller does not support external equipment
  4414.  110Bh    controller supports only external equipment
  4415.  2001h    message not supported in current state
  4416.  2002h    illegal controller/PLCI/NCCI
  4417.  2003h    out of PLCI
  4418.  2004h    out of NCCI
  4419.  2005h    out of LISTEN
  4420.  2006h    out of FAX resources (T.30 protocol)
  4421.  2007h    illegal message parameter coding
  4422.  3001h    unsupported B1 protocol
  4423.  3002h    unsupported B2 protocol
  4424.  3003h    unsupported B3 protocol
  4425.  3004h    unsupported B1 protocol parameter
  4426.  3005h    unsupported B2 protocol parameter
  4427.  3006h    unsupported B3 protocol parameter
  4428.  3007h    unsupported B protocol combination
  4429.  3008h    NCPI not supported
  4430.  3009h    unknown CIP value
  4431.  300Ah    unsupported flags (reserved bits set)
  4432.  300Bh    unsupported facility
  4433.  300Ch    data length not supported by current protocol
  4434.  300Dh    reset procedure not supported by current protocol
  4435. SeeAlso: #04069
  4436. ----------F103-------------------------------
  4437. INT F1 - Common ISDN API (CAPI) v1.1 - "API-PUT-MESSAGE"
  4438.     AH = 03h
  4439.     DX = application ID (see AH=01h)
  4440.     ES:BX -> message to be sent (see #04071)
  4441. Return: AX = status (0000h,1002h,1003h,1004h,1005h) (see #04069)
  4442. Notes:    the caller is required to provide at least 512 bytes of stack space
  4443.     the message buffer may be reused as soon as this call returns
  4444. SeeAlso: AH=01h,AH=04h,INT F1/AL=03h
  4445.  
  4446. Format of CAPI message:
  4447. Offset    Size    Description    (Table 04071)
  4448.  00h    WORD    total message length, including header
  4449.  02h    WORD    application ID (see AH=01h)
  4450.  04h    BYTE    command (see #04072,#04073)
  4451.  05h    BYTE    subcommand (see #04072,#04073)
  4452.  06h    WORD    message sequence number
  4453.         0000h-7FFFh messages from application to CAPI (and replies)
  4454.         8000h-FFFFh messages from CAPI to application (and replies)
  4455.  08h    var    message data (max 172 bytes for v1.1 only)
  4456.  
  4457. (Table 04072)
  4458. Values for CAPI v1.1 message command/subcommand:
  4459. Cmd/SubCmd    Name            Description
  4460.  01h/00h    RESET-B3-REQ    request resetting of a Level 3 connection
  4461.  01h/01h    RESET-B3-CONF    confirm Level 3 connection reset
  4462.  01h/02h    RESET-B3-IND    indication from CAPI that Level 3 conn. reset
  4463.  01h/03h    RESET-B3-RESP    confirm receipt of RESET-B3-IND
  4464.  02h/00h    CONNECT-REQ        establish B-channel connection
  4465.  02h/01h    CONNECT-CONF    confirm start of connection establishment
  4466.  02h/02h    CONNECT-IND        indication from CAPI of incoming connection
  4467.  02h/03h    CONNECT-RESP    accept incoming connection
  4468.  03h/02h    CONNECT-ACTIVE-IND    indication that B-channel connection complete
  4469.  03h/03h    CONNECT-ACTIVE-RESP    confirm connection-complete indication
  4470.  04h/00h    DISCONNECT-REQ    request shutdown of B-channel connection
  4471.  04h/01h    DISCONNECT-CONF    confirm shutdown of B-channel connection
  4472.  04h/02h    DISCONNECT-IND    indication that B-channel is shutting down
  4473.  04h/03h    DISCONNECT-RESP    confirm that application knows of shutdown
  4474.  05h/00h    LISTEN-REQ        enable indication of incoming connections
  4475.  05h/01h    LISTEN-CONF        confirm enabling of incoming conn. indication
  4476.  06h/00h    GET-PARAMS-REQ    request B-channel parameters
  4477.  06h/01h    GET-PARAMS-CONF    return B-channel parameters
  4478.  07h/00h    INFO-REQ        set B-channel info to be signalled to app
  4479.  07h/01h    INFO-CONF        confirm B-channel info signalling
  4480.  07h/02h    INFO-IND        signal B-channel events to application
  4481.  07h/03h    INFO-CONF        confirm receipt of INFO-IND
  4482.  08h/00h    DATA-REQ        send D-channel data
  4483.  08h/01h    DATA-CONF        confirm receipt of DATA-REQ
  4484.  08h/02h    DATA-IND        receive D-channel data
  4485.  08h/03h    DATA-RESP        confirm receipt fo DATA-IND
  4486.  09h/00h    CONNECT-INFO-REQ    request connection information
  4487.  09h/01h    CONNECT-INFO-CONF    return connection information
  4488.  40h/00h    SELECT-B2-PROTOCOL-REQ  select Level 2 protocol
  4489.  40h/01h    SELECT-B2-PROTOCOL-CONF confirm receipt of SELECT-B2-PROTOCOL-REQ
  4490.  80h/00h    SELECT-B3-PROTOCOL-REQ  select Level 3 protocol
  4491.  80h/01h    SELECT-B3-PROTOCOL-CONF confirm receipt of SELECT-B3-PROTOCOL-REQ
  4492.  81h/00h    LISTEN-B3-REQ    enable notification of incoming Level 3 calls
  4493.  81h/01h    LISTEN-B3-CONF    confirm receipt of LISTEN-B3-REQ
  4494.  82h/00h    CONNECT-B3-REQ    establish Level 3 connection
  4495.  82h/01h    CONNECT-B3-CONF    confirm start of connection establishment
  4496.  82h/02h    CONNECT-B3-IND    indication of incoming Level 3 connection
  4497.  82h/03h    CONNECT-B3-RESP    accept incoming connection
  4498.  83h/02h    CONNECT-B3-ACTIVE-IND  indication that Level 3 connection complete
  4499.  83h/03h    CONNECT-B3-ACTIVE-RESP confirm connection-complete indication
  4500.  84h/00h    DISCONNECT-B3-REQ    request shutdown of Level 3 connection
  4501.  84h/01h    DISCONNECT-B3-CONF    confirm shutdown of Level 3 connection
  4502.  84h/02h    DISCONNECT-B3-IND    indication that Level 3 is shutting down
  4503.  84h/03h    DISCONNECT-B3-RESP    confirm that application knows of shutdown
  4504.  85h/00h    GET-B3-PARAMS-REQ    request Level 3 parameters
  4505.  85h/01h    GET-B3-PARAMS-CONF    return Level 3 parameters
  4506.  86h/00h    DATA-B3-REQ        send data on Level 3
  4507.  86h/01h    DATA-B3-CONF    confirm sending of Level 3 data
  4508.  86h/02h    DATA-B3-IND        indication of incoming Level 3 data
  4509.  86h/03h    DATA-B3-RESP    confirm receipt of Level 3 data
  4510.  87h/02h    HANDSET-IND        indication of Handset events
  4511.  87h/03h    HANDSET-RESP    confirm receipt of Handset event
  4512.  FFh/00h    MANUFACTURER-REQ    vendor-specific request
  4513.  FFh/01h    MANUFACTURER-CONF    vendor-specific request confirmation
  4514.  FFh/02h    MANUFACTURER-IND    vendor-specific notification
  4515.  FFh/03h    MANUFACTURER-RESP    vendor-specific notification confirmation
  4516. SeeAlso: #04071,#04073
  4517. ----------F1--03-----------------------------
  4518. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_PUT_MESSAGE"
  4519.     AL = 03h
  4520.     AH = CAPI version number * 10 (14h for v2.0)
  4521.     DX = application ID (see INT F1/AL=01h)
  4522.     ES:BX -> message to be sent (see #04071)
  4523. Return: AX = status (0000h,11xxh) (see #04070)
  4524. Notes:    the caller is required to provide at least 512 bytes of stack space
  4525.     the message buffer may be reused as soon as this call returns
  4526. SeeAlso: AH=03h,INT F1/AL=01h,INT F1/AL=04h
  4527.  
  4528. (Table 04073)
  4529. Values for CAPI v2.0 message command/subcommand:
  4530. Cmd/SubCmd    Name            Description
  4531.  01h/80h    ALERT_REQ        indicate compatibility with incoming calls
  4532.  01h/81h    ALERT_CONF        confirm receipt of ALERT_REQ
  4533.  02h/80h    CONNECT_REQ        establish B-channel connection
  4534.  02h/81h    CONNECT_CONF    confirm start of connection establishment
  4535.  02h/82h    CONNECT_IND        indication from CAPI of incoming connection
  4536.  02h/83h    CONNECT_RESP    accept incoming connection
  4537.  03h/82h    CONNECT_ACTIVE_IND    indication that B-channel connection complete
  4538.  03h/83h    CONNECT_ACTIVE_RESP    confirm connection-complete indication
  4539.  04h/80h    DISCONNECT_REQ    request shutdown of B-channel connection
  4540.  04h/81h    DISCONNECT_CONF    confirm shutdown of B-channel connection
  4541.  04h/82h    DISCONNECT_IND    indication that B-channel is shutting down
  4542.  04h/83h    DISCONNECT_RESP    confirm that application knows of shutdown
  4543.  05h/80h    LISTEN_REQ        enable signalling on incoming events
  4544.  05h/81h    LISTEN_CONF        confirm enabling of incoming event signalling
  4545.  08h/80h    INFO_REQ        send protocol information for physical connect
  4546.  08h/81h    INFO_CONF        confirm INFO_REQ
  4547.  08h/82h    INFO_IND        indicate event for physical connection
  4548.  08h/83h    INFO_CONF        confirm receipt of INFO_IND
  4549.  41h/80h    SELECT_B_PROTOCOL_REQ   change protocol on already-active connect
  4550.  41h/81h    SELECT_B_PROTOCOL_CONF  confirm receipt of SELECT_B_PROTOCOL_REQ
  4551.  80h/80h    FACILITY_REQ    control optional facilities
  4552.  80h/81h    FACILITY_CONF    confirm acceptance of FACILITY_REQ
  4553.  80h/82h    FACILITY_IND    indicate facility-dependent event
  4554.  80h/83h    FACILITY_RESP    confirm receipt of FACILITY_IND
  4555.  82h/80h    CONNECT_B3_REQ    establish Level 3 connection
  4556.  82h/81h    CONNECT_B3_CONF    confirm start of connection establishment
  4557.  82h/82h    CONNECT_B3_IND    indication of incoming Level 3 connection
  4558.  82h/83h    CONNECT_B3_RESP    accept incoming connection
  4559.  83h/82h    CONNECT_B3_ACTIVE_IND  indication that Level 3 connection complete
  4560.  83h/83h    CONNECT_B3_ACTIVE_RESP confirm connection-complete indication
  4561.  84h/80h    DISCONNECT_B3_REQ    request shutdown of Level 3 connection
  4562.  84h/81h    DISCONNECT_B3_CONF    confirm shutdown of Level 3 connection
  4563.  84h/82h    DISCONNECT_B3_IND    indication that Level 3 is shutting down
  4564.  84h/83h    DISCONNECT_B3_RESP    confirm that application knows of shutdown
  4565.  85h/80h    GET_B3_PARAMS_REQ    request Level 3 parameters
  4566.  85h/81h    GET_B3_PARAMS_CONF    return Level 3 parameters
  4567.  86h/80h    DATA_B3_REQ        send data on Level 3
  4568.  86h/81h    DATA_B3_CONF    confirm sending of Level 3 data
  4569.  86h/82h    DATA_B3_IND        indication of incoming Level 3 data
  4570.  86h/83h    DATA_B3_RESP    confirm receipt of Level 3 data
  4571.  87h/80h    RESET_B3_REQ    request resetting of a logical connection
  4572.  87h/81h    RESET_B3_CONF    confirm logical connection reset
  4573.  87h/82h    RESET_B3_IND    indication from CAPI that logical conn. reset
  4574.  87h/83h    RESET_B3_RESP    confirm receipt of RESET_B3_IND
  4575.  88h/82h    CONNECT_B3_T90_ACTIVE_IND  indicate switch from T.70 to T.90
  4576.  88h/83h    CONNECT_B3_T90_ACTIVE_RESP confirm receipt of T90_ACTIVE_IND
  4577.  FFh/80h    MANUFACTURER_REQ    vendor-specific request
  4578.  FFh/81h    MANUFACTURER_CONF    vendor-specific request confirmation
  4579.  FFh/82h    MANUFACTURER_IND    vendor-specific notification
  4580.  FFh/83h    MANUFACTURER_RESP    vendor-specific notification confirmation
  4581. SeeAlso: #04071,#04072
  4582. ----------F104-------------------------------
  4583. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MESSAGE"
  4584.     AH = 04h
  4585.     DX = application ID (see AH=01h)
  4586. Return: AX = status (0000h,1002h,1006h,1007h) (see #04069)
  4587.     ES:BX -> message if successful (see #04071)
  4588. Range:    INT 00 to INT FF, selectable by program parameter
  4589. Notes:    the caller is required to provide at least 512 bytes of stack space
  4590.     the returned message may be overwritten by the next call to this
  4591.       function
  4592. SeeAlso: AH=03h
  4593. ----------F1--04-----------------------------
  4594. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MESSAGE"
  4595.     AL = 04h
  4596.     AH = CAPI version number * 10 (14h for v2.0)
  4597.     DX = application ID (see AH=01h)
  4598. Return: AX = status (0000h,11xxh) (see #04070)
  4599.     ES:BX -> message if successful (see #04071)
  4600. Range:    INT 00 to INT FF, selectable by program parameter
  4601. Notes:    the caller is required to provide at least 512 bytes of stack space
  4602.     the returned message may be overwritten by the next call to this
  4603.       function
  4604. SeeAlso: AH=04h,INT F1/AL=03h
  4605. ----------F105-------------------------------
  4606. INT F1 - Common ISDN API (CAPI) v1.1 - "API-SET-SIGNAL" - SIGNAL HANDLING
  4607.     AH = 05h
  4608.     DX = application ID (see AH=01h)
  4609.     ES:BX -> signal handler or 0000h:0000h to disable
  4610. Return: AX = status (0000h,1002h) (see #04069)
  4611. Notes:    the caller is required to provide at least 512 bytes of stack space
  4612.     the signal handler is called as though it were an interrupt, with
  4613.       interrupts disabled; the handler must preserve all registers and
  4614.       return with an IRET
  4615. SeeAlso: AH=01h
  4616. ----------F1--05-----------------------------
  4617. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_SET_SIGNAL" - SIGNAL HANDLING
  4618.     AL = 05h
  4619.     AH = CAPI version number * 10 (14h for v2.0)
  4620.     DX = application ID (see AH=01h)
  4621.     ES:BX -> signal handler or 0000h:0000h to disable
  4622.     SI:DI = parameter to pass to signal handler
  4623. Return: AX = status (0000h,11xxh) (see #04070)
  4624. Notes:    the caller is required to provide at least 512 bytes of stack space
  4625.     the signal handler is called as though it were an interrupt, with
  4626.       interrupts disabled and DX,SI,DI set as they were when this function
  4627.       was called; the handler must preserve all registers and return with
  4628.       an IRET
  4629.     the signal handler may call CAPI_PUT_MESSAGE, CAPI_GET_MESSAGE, and
  4630.       CAPI_SET_SIGNAL
  4631. SeeAlso: INT F1/AL=01h
  4632. ----------F106-------------------------------
  4633. INT F1 - Common ISDN API (CAPI) v1.1 - "API-DEINSTALL" - UNINSTALL
  4634.     AH = 06h
  4635.     BX = force flag
  4636.         0000h normal uninstall
  4637.         0001h forced uninstall
  4638. Return: AX = status (0000h,1008h) (see #04069)
  4639. Desc:    reset ISDN controller, close all ISDN Level 1 connections except for
  4640.       telephone connections
  4641. Notes:    the caller is required to provide at least 512 bytes of stack space
  4642. SeeAlso: INT F1/AL=01h,INT F1/AH=01h
  4643. ----------F1F0-------------------------------
  4644. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MANUFACTURER"
  4645.     AH = F0h
  4646.     ES:BX -> 64-byte buffer for manufacturer identification information
  4647. Return: ES:BX buffer filled with ASCIZ idnetification string
  4648. Range:    INT 00 to INT FF, selectable by program parameter
  4649. Notes:    the caller is required to provide at least 512 bytes of stack space
  4650. SeeAlso: AH=01h,AH=F1h,AH=F2h,AH=FFh,INT F1/AL=F0h
  4651. ----------F1--F0-----------------------------
  4652. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MANUFACTURER"
  4653.     AL = F0h
  4654.     AH = CAPI version number * 10 (14h for v2.0)
  4655.     ES:BX -> 64-byte buffer for manufacturer identification information
  4656. Return: ES:BX buffer filled with ASCIZ idnetification string
  4657. Range:    INT 00 to INT FF, selectable by program parameter
  4658. Notes:    the caller is required to provide at least 512 bytes of stack space
  4659. SeeAlso: AH=F0h,INT F1/AL=01h,INT F1/AL=F1h,INT F1/AL=F2h,INT F1/AL=FFh
  4660. ----------F1F1-------------------------------
  4661. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-VERSION"
  4662.     AH = F1h
  4663.     ES:BX -> 64-byte buffer for CAPI version number
  4664. Return: ES:BX buffer filled with ASCIZ version string
  4665. Notes:    the caller is required to provide at least 512 bytes of stack space
  4666. SeeAlso: AH=01h,AH=F0h,AH=F2h,AH=FFh
  4667. ----------F1--F1-----------------------------
  4668. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_VERSION"
  4669.     AL = F1h
  4670.     AH = CAPI version number * 10 (14h for v2.0)
  4671. Return: AH = CAPI major version number
  4672.     AL = CAPI minor version number
  4673.     DH = vendor-specific major version
  4674.     DL = vendor-specific minor version
  4675. Notes:    the caller is required to provide at least 512 bytes of stack space
  4676. SeeAlso: AH=F1h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AL=FFh
  4677. ----------F1F2-------------------------------
  4678. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-SERIAL-NUMBER"
  4679.     AH = F2h
  4680.     ES:BX -> 64-byte buffer for CAPI serial number
  4681. Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
  4682.           string if no serial number
  4683. Notes:    the caller is required to provide at least 512 bytes of stack space
  4684. SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=FFh
  4685. ----------F1--F2-----------------------------
  4686. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_SERIAL_NUMBER"
  4687.     AL = F2h
  4688.     AH = CAPI version number * 10 (14h for v2.0)
  4689.     ES:BX -> 64-byte buffer for CAPI serial number
  4690. Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
  4691.           string if no serial number
  4692. Notes:    the caller is required to provide at least 512 bytes of stack space
  4693. SeeAlso: AH=F2h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F3h
  4694. ----------F1--F3-----------------------------
  4695. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_PROFILE" - GET CAPABILITIES
  4696.     AL = F3h
  4697.     AH = CAPI version number * 10 (14h for v2.0)
  4698.     ES:BX -> 64-byte buffer for CAPI capabilities (see #04074)
  4699.     CX = controller number (01h-06h) or 0000h to get number of controllers
  4700. Return: AX = status (0000h,11xxh) (see #04070)
  4701.     ES:BX buffer filled if successful
  4702. Notes:    the caller is required to provide at least 512 bytes of stack space
  4703. SeeAlso: INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AH=FFh
  4704.  
  4705. Format of CAPI v2.0 capabilities:
  4706. Offset    Size    Description    (Table 04074)
  4707.  00h    WORD    number of installed controllers
  4708.  02h    WORD    number of supported B channels
  4709.  04h    DWORD    global options (see #04075)
  4710.  08h    DWORD    B1 protocol support flags (see #04076)
  4711.  0Ch    DWORD    B2 protocol support flags (see #04077)
  4712.  10h    DWORD    B3 protocol support flags (see #04078)
  4713.  14h 24 BYTEs    reserved for CAPI use
  4714.  2Ch 20 BYTEs    vendor-specific information
  4715.  
  4716. Bitfields for CAPI v2.0 global options:
  4717. Bit(s)    Description    (Table 04075)
  4718.  0    internal controller supported
  4719.  1    external controller supported
  4720.  2    handset supported (only if bit 1 also set)
  4721.  3    DTMF supported
  4722.  4-31    reserved (0)
  4723. SeeAlso: #04074
  4724.  
  4725. Bitfields for CAPI v2.0 B1 protocol support:
  4726. Bit(s)    Description    (Table 04076)
  4727.  0    64k bps with HDLC framing (required, always set)
  4728.  1    64k bps bit-transparent operation with network byte framing
  4729.  2    V.110 asynchronous with start/stop byte framing
  4730.  3    V.110 synchronous with HDLC framing
  4731.  4    T.30 modem for group 3 FAX
  4732.  5    64k bps inverted with HDLC framing
  4733.  6    56k bps bit-transparent operation with network byte framing
  4734.  7-31    reserved (0)
  4735. SeeAlso: #04074
  4736.  
  4737. Bitfields for CAPI v2.0 B2 protocol support:
  4738. Bit(s)    Description    (Table 04077)
  4739.  0    ISO 7776 (X.75 SLP) (required, always set)
  4740.  1    transparent
  4741.  2    SDLC
  4742.  3    Q.921 LAPD (D-channel X.25)
  4743.  4    T.30 for group 3 FAX
  4744.  5    point-to-point protocol (PPP)
  4745.  6    transparent (ignoring B1 framing errors)
  4746.  7-31    reserved (0)
  4747. SeeAlso: #04074
  4748.  
  4749. Bitfields for CAPI v2.0 B3 protocol support:
  4750. Bit(s)    Description    (Table 04078)
  4751.  0    transparent (required, always set)
  4752.  1    T.90NL with T.70NL compatibility
  4753.  2    ISO 8208 (X.25 DTE-DTE)
  4754.  3    X.25 DCE
  4755.  4    T.30 for group 3 FAX
  4756.  5-31    reserved (0)
  4757. SeeAlso: #04074
  4758. ----------F1FF-------------------------------
  4759. INT F1 - Common ISDN API (CAPI) v1.1 - "API-MANUFACTURER" - VENDOR-SPECIFIC
  4760.     AH = FFh
  4761.     other registers vendor-specific
  4762. Return: registers vendor-specific
  4763. Range:    INT 00 to INT FF, selectable by program parameter
  4764. Notes:    the caller is required to provide at least 512 bytes of stack space
  4765. SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=F2h,INT F1/AH=FFh
  4766. ----------F1--FF-----------------------------
  4767. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_MANUFACTURER" - VENDOR-SPECIFIC
  4768.     AL = FFh
  4769.     AH = CAPI version number * 10 (14h for v2.0)
  4770.     other registers vendor-specific
  4771. Return: registers vendor-specific
  4772. Range:    INT 00 to INT FF, selectable by program parameter
  4773. Notes:    the caller is required to provide at least 512 bytes of stack space
  4774. SeeAlso: AH=FFh,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F2h
  4775. --------*-F2---------------------------------
  4776. INT F2 - reserved for user interrupt
  4777. --------s-F2---------------------------------
  4778. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  4779. SeeAlso: INT F1"SPEECH"
  4780. --------N-F2---------------------------------
  4781. INT F2 - NetWare Remote Boot - ORIGINAL INT 13
  4782. SeeAlso: INT F1"NetWare",INT F3"NetWare",INT F4"NetWare"
  4783. ----------F2---------------------------------
  4784. INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
  4785.     AH = function number (see #04079)
  4786.     ???
  4787. Return: ???
  4788. Program: ImageCapture is a product of International Computers
  4789. SeeAlso: INT F3"ICCTSR"
  4790.  
  4791. (Table 04079)
  4792. Values for ImageCapture function:
  4793.  01h    power up
  4794.  02h    power down
  4795.  03h    set controls
  4796.  04h    capture image
  4797.  05h    display image
  4798.  06h    read file
  4799.  07h    write file
  4800.  08h    write array
  4801.  09h    read pixel
  4802.  0Ah    write pixel
  4803.  0Bh    check if VGA present
  4804.  0Ch    set video mode
  4805.  0Dh    check for keystroke
  4806.  0Eh    delay
  4807. --------*-F3---------------------------------
  4808. INT F3 - reserved for user interrupt
  4809. SeeAlso: INT F2"user",INT F4"user"
  4810. --------s-F3---------------------------------
  4811. INT F3 - SoundBlaster - POINTER TO ECHO VALUE
  4812. Note:    this is not a vector, but a pointer to a DWORD containing the echo
  4813.       value selected with SET-ECHO.EXE
  4814. SeeAlso: INT 2F/AX=FBFBh/ES=0000h
  4815. ----------F3---------------------------------
  4816. INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
  4817. Program: ImageCapture is a product of International Computers
  4818. SeeAlso: INT F2"ICCTSR"
  4819. --------N-F3---------------------------------
  4820. INT F3 - NetWare Remote Boot - BOOT ROM'S INT 13 HANDLER
  4821. SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F4"NetWare"
  4822. --------*-F4---------------------------------
  4823. INT F4 - reserved for user interrupt
  4824. SeeAlso: INT F3"user",INT F5"user"
  4825. --------T-F4---------------------------------
  4826. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  4827. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F5"DoubleDOS",INT FE"DoubleDOS"
  4828. --------N-F4---------------------------------
  4829. INT F4 - NetWare Remote Boot - ???
  4830. SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F3"NetWare"
  4831. --------*-F5---------------------------------
  4832. INT F5 - reserved for user interrupt
  4833. SeeAlso: INT F4"user",INT F6"user"
  4834. --------T-F5---------------------------------
  4835. INT F5 - DoubleDOS - ???
  4836. SeeAlso: INT F4"DoubleDOS",INT F6"DoubleDOS"
  4837. --------*-F6---------------------------------
  4838. INT F6 - reserved for user interrupt
  4839. SeeAlso: INT F5"user",INT F7"user"
  4840. --------T-F6---------------------------------
  4841. INT F6 - DoubleDOS - ???
  4842. SeeAlso: INT F5"DoubleDOS",INT F7"DoubleDOS"
  4843. --------*-F7---------------------------------
  4844. INT F7 - reserved for user interrupt
  4845. SeeAlso: INT F6"user"
  4846. --------T-F7---------------------------------
  4847. INT F7 - DoubleDOS - ???
  4848. SeeAlso: INT F6"DoubleDOS"
  4849. ----------F700-------------------------------
  4850. INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
  4851.     AH = 00h
  4852.     AL = function
  4853.         00h get configuration record
  4854.         Return: DS:DX -> configuration record
  4855.         01h set configuration record
  4856.         Return: nothing
  4857.         02h get path for option
  4858.         DS:DX -> option name
  4859.         Return: DS:DX -> path
  4860.         03h determine whether configuration record set
  4861.         Return: AX = status
  4862.                 0000h set
  4863.                 0001h not yet set
  4864.         04h get link state
  4865.         Return: AX = state
  4866.                 0000h unlinked
  4867.                 0001h linked
  4868. Notes:    this information is preliminary and still subject to change
  4869.     all of the INT F7 calls for FSBBS are used for interprogram
  4870.       communication between the BBS kernel and the programs it spawns
  4871. SeeAlso: AH=01h
  4872. ----------F701-------------------------------
  4873. INT F7 - FSBBS 2.0 - USER RECORD
  4874.     AH = 01h
  4875.     AL = function
  4876.         00h get user record for user currently online
  4877.         Return: DS:DX -> user record
  4878.         01h set user record
  4879.         DS:DX -> user record
  4880.         Return: nothing
  4881. SeeAlso: AH=00h,AH=02h
  4882. ----------F702-------------------------------
  4883. INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
  4884.     AH = 02h
  4885. Return: DS:DX -> 8-character blank-padded account name
  4886. SeeAlso: AH=01h
  4887. ----------F703-------------------------------
  4888. INT F7 - FSBBS 2.0 - TERMINAL NUMBER
  4889.     AH = 03h
  4890.     AL = function
  4891.         00h get terminal index number
  4892.         Return: DX = index number
  4893.         01h set terminal index number
  4894.         DX = terminal index
  4895.         Return: nothing
  4896. ----------F704-------------------------------
  4897. INT F7 - FSBBS 2.0 - PASSDATA BUFFER
  4898.     AH = 04h
  4899.     AL = function
  4900.         00h get PassData buffer contents
  4901.         DS:DX -> buffer for PassData contents
  4902.         Return: DS:DX buffer filled
  4903.         01h set PassData contents
  4904.         DS:DX -> buffer containing new PassData
  4905.         CH = length of data in buffer
  4906.         Return: nothing
  4907. ----------F705-------------------------------
  4908. INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
  4909.     AH = 05h
  4910.     AL = function
  4911.         00h get time remaining
  4912.         Return: DX = number of minutes remaining
  4913.         01h get current time
  4914.         Return: DS:DX -> 8-character time string
  4915.         02h increment time
  4916.         DX = number of additional minutes
  4917.         03h decrement time
  4918.         DX = number of minutes
  4919. SeeAlso: AH=06h
  4920. ----------F706-------------------------------
  4921. INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
  4922.     AH = 06h
  4923.     AL = function
  4924.         00h determine whether function is available
  4925.         DX = index of function
  4926.         01h set function availability
  4927.         DX = index of function
  4928.         ???
  4929. Return: nothing
  4930. SeeAlso: AH=05h,AH=07h
  4931. ----------F707-------------------------------
  4932. INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
  4933.     AH = 07h
  4934.     AL = function
  4935.         00h get current dump mode
  4936.         Return: DL = mode
  4937.         01h set dump mode
  4938.         DL = mode
  4939. SeeAlso: AH=06h
  4940. --------*-F8---------------------------------
  4941. INT F8 - reserved for user interrupt
  4942. --------h-F8---------------------------------
  4943. INT F8 - Sanyo MBC-550/555 - IRQ0 - 100 HZ INTERRUPT
  4944. Note:    normally masked off at 8259 interrupt controller
  4945. SeeAlso: INT 08"IRQ0",INT F9"Sanyo",INT FA"Sanyo"
  4946. --------T-F8---------------------------------
  4947. INT F8 - DoubleDOS - ???
  4948. --------*-F9---------------------------------
  4949. INT F9 - reserved for user interrupt
  4950. --------T-F9---------------------------------
  4951. INT F9 - DoubleDOS - ???
  4952. --------h-F9---------------------------------
  4953. INT F9 - Sanyo MBC-550/555 - IRQ1 - ???
  4954. Note:    documented as "for system use only"; normally enabled at the 8259
  4955. SeeAlso: INT 09"IRQ1",INT F8"Sanyo",INT FA"Sanyo"
  4956. --------*-FA---------------------------------
  4957. INT FA - reserved for user interrupt
  4958. --------h-FA---------------------------------
  4959. INT FA - Sanyo MBC-550/555 - IRQ2 - SERIAL PORT USART INTERRUPT
  4960. Note:    this vector is not used on the Tandy 1000TL
  4961. SeeAlso: INT 0A"IRQ2",INT F9"Sanyo",INT FB"Sanyo"
  4962. --------T-FA---------------------------------
  4963. INT FA - DoubleDOS - TURN OFF TIMESHARING
  4964. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  4965. ----------FA---------------------------------
  4966. INT FA P - ASM Edit - INSTALLATION CHECK
  4967. Program: ASM Edit is a shareware programmer's editor
  4968. Note:    ASM Edit hooks this vector in protected mode to allow DPMI programs
  4969.       to detect whether they were run while shelled to DOS from ASM Edit
  4970.  
  4971. Format of ASM Edit signature block:
  4972. Offset    Size    Description    (Table 04080)
  4973.  00h    BYTE    CFh (IRET)
  4974.  01h  8 BYTEs    signature "ASM Edit" (no trailing NUL)
  4975. --------*-FB---------------------------------
  4976. INT FB - reserved for user interrupt
  4977. --------h-FB---------------------------------
  4978. INT FB - Sanyo MBC-550/555 - IRQ3 - KEYBOARD USART RECEIVE INTERRUPT
  4979. SeeAlso: INT 0B"IRQ3",INT FA"Sanyo",INT FC"Sanyo"
  4980. --------T-FB---------------------------------
  4981. INT FB - DoubleDOS - TURN ON TIMESHARING
  4982. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  4983. --------*-FC---------------------------------
  4984. INT FC - reserved for user interrupt
  4985. --------T-FC---------------------------------
  4986. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  4987. Return: ES = segment of display buffer
  4988. Desc:    determine the address of the virtual screen to which the program
  4989.       should write instead of the actual video memory, so that the
  4990.       multitasked programs do not interfere with each other's output
  4991. Note:    the display buffer may be moved if multitasking is enabled
  4992. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  4993. --------h-FC---------------------------------
  4994. INT FC - Sanyo MBC-550/555 - IRQ4 - PRINTER READY INTERRUPT
  4995. Note:    normally masked off at the 8259 interrupt controller
  4996. SeeAlso: INT 0C"IRQ4",INT FB"Sanyo",INT FD"Sanyo"
  4997. --------*-FD---------------------------------
  4998. INT FD - reserved for user interrupt
  4999. --------T-FD---------------------------------
  5000. INT FD - DoubleDOS - ???
  5001. --------h-FD---------------------------------
  5002. INT FD - Sanyo MBC-550/555 - IRQ5 - FLOPPY DISK CONTROLLER
  5003. SeeAlso: INT 0D"IRQ5",INT FC"Sanyo",INT FE"Sanyo"
  5004. --------S-FD---------------------------------
  5005. INT FD - TFPCX - INSTALLATION CHECK
  5006.     AH = function (also see separate entries below)
  5007. Program: TFPCX is an interface between modem and terminal program for packet-
  5008.       radio communications
  5009. InstallCheck:    test for the string "N5NX" three bytes beyond the interrupt
  5010.       handler
  5011. Range:    INT FD is the default, but may be changed, so the full installation
  5012.      check consists of scanning for the signature
  5013. Note:    TFPCX returns AX=FFFFh on any unsupported function call
  5014. SeeAlso: AH=01h,AH=03h,AH=FEh
  5015. --------S-FD01-------------------------------
  5016. INT FD - TFPCX - TEST FOR CHARACTER WAITING
  5017.     AH = 01h
  5018. Return: AX = status
  5019.         0000h no characters waiting
  5020.         0001h character available for input
  5021. Program: TFPCX is an interface between modem and terminal program for packet-
  5022.       radio communications
  5023. SeeAlso: AH=02h
  5024. --------S-FD02-------------------------------
  5025. INT FD - TFPCX - GET CHARACTER
  5026.     AH = 02h
  5027. Return: AL = character
  5028. Notes:    this call is only allowed if AH=01h indicated that a character is
  5029.       available
  5030.     all available characters should be read before sending any additional
  5031.       characters
  5032. SeeAlso: AH=01h,AH=03h
  5033. --------S-FD03-------------------------------
  5034. INT FD - TFPCX - OUTPUT CHARACTER
  5035.     AH = 03h
  5036.     AL = character to send
  5037. Return: nothing
  5038. SeeAlso: AH=02h
  5039. --------S-FDFE-------------------------------
  5040. INT FD - TFPCX - GET VERSION
  5041.     AH = FEh
  5042. Return: AH = major version
  5043.     AL = minor version
  5044. Program: TFPCX is an interface between modem and terminal program for packet-
  5045.       radio communications
  5046. SeeAlso: AH=01h,AH=03h
  5047. --------B-FE---------------------------------
  5048. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  5049. Note:    the ROM BIOS uses 0030h:0100h as the initial stack on startup, which
  5050.       is the last fourth of the interrupt vector table.  If the processor
  5051.       is returned to real mode via a hardware reset (the only possibility
  5052.       on an 80286, though there are a number of ways of generating one),
  5053.       then the BIOS startup code stacks three words on its scratch stack
  5054.       before determining that a return to real mode has been requested.
  5055.       As a result, INT FE and INT FF are corrupted.
  5056. SeeAlso: INT FF"XT286"
  5057. --------T-FE---------------------------------
  5058. INT FE - DoubleDOS - GIVE UP TIME
  5059.     AL = number of 55ms time slices to give away
  5060. Return: after other program (if active) has run
  5061. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  5062. --------G-FE---------------------------------
  5063. INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
  5064. SeeAlso: INT 3F
  5065. --------h-FE---------------------------------
  5066. INT FE - Sanyo MBC-550/555 - IRQ6 - 8087 COPROCESSOR INTERRUPT
  5067. Note:    normally masked off at the 8259 interrupt controller
  5068. SeeAlso: INT 0E"IRQ6",INT FD"Sanyo",INT FF"Sanyo"
  5069. --------B-FF---------------------------------
  5070. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  5071. Note:    (see INT FE"XT286")
  5072. SeeAlso: INT FE"XT286"
  5073. --------b-FF---------------------------------
  5074. INT FF - Z100 - WARM BOOT
  5075. SeeAlso: INT 40"Z100"
  5076. --------h-FF---------------------------------
  5077. INT FF - Sanyo MBC-550/555 - IRQ7 - USER INTERRUPT FOR EXTERNAL INTERRUPT
  5078. Note:    normally masked off at the 8259 interrupt controller
  5079. SeeAlso: INT 0F"IRQ7",INT FE"Sanyo"
  5080. --------Q-FF---------------------------------
  5081. INT FF U - QEMM-386.SYS v6.0+ - internal
  5082. Notes:    requires that a byte in the conventional-memory stub be set to the
  5083.       desired function number (00h through 0Ch)
  5084. SeeAlso: #04081
  5085.  
  5086. (Table 04081)
  5087. Values for QEMM internal functions:
  5088.  00h    reflect back to Virtual86-mode interrupt handler (default)
  5089.  01h    ???
  5090.  02h    access DR7???
  5091.  03h    QPI upcall (see INT 67/AH=3Fh)
  5092.  04h    ???
  5093.  05h    ???
  5094.  06h    INT 15/AH=87h
  5095.  07h    EMS services (see INT 67/AH=40h,INT 67/AH=5Dh)
  5096.  08h    ???
  5097.  09h    QEMM exception handler
  5098.  0Ah    XMS services (see INT 2F/AX=4310h"XMS")
  5099.  0Bh    Virtual DMA Services (see INT 4B/AX=8102h)
  5100.  0Ch    ???
  5101. --------v-FF---------------------------------
  5102. INT FF - VIRUS - "Violetta" - ???
  5103. Note:    used but not chained by virus
  5104. SeeAlso: INT E0"VIRUS",INT F1"VIRUS"
  5105. --------V-FF----BX0000-----------------------
  5106. INT FF - PC/FORTH - GRAPHICS API - VIDEO STATUS CHANGE
  5107.     BX = 0000h
  5108.     DS:SI -> FORTH program counter
  5109.     SS:BP -> FORTH parameter stack
  5110.     SS:SP -> FORTH return stack
  5111.     DS:DX -> FORTH video parameter area
  5112. Desc:    called to inform graphics driver of any status changes such as video
  5113.       mode changes, character color changes, graphics XOR mode turned on
  5114.       or off, etc.; also used as an installation check
  5115. Index:    installation check;PC/FORTH
  5116. --------V-FF---------------------------------
  5117. INT FF - PC/FORTH - GRAPHICS API
  5118.     BX = function number
  5119.         0001h function REDRAW
  5120.         0002h function !PEL
  5121.         0003h function @PEL
  5122.         0004h function LINE
  5123.         0005h function ARC
  5124.         0006h function @BLOCK
  5125.         0007h function !BLOCK
  5126.         0008h function FLOOD
  5127.     DS:SI -> FORTH program counter
  5128.     SS:BP -> FORTH parameter stack
  5129.     SS:SP -> FORTH return stack
  5130.     details of parameters not available
  5131. Return:    AX,BX,CX,DX,ES,DI may be destroyed
  5132. Note:    these functions all display an error message if the graphics routines
  5133.       are not resident
  5134. --------!---Admin----------------------------
  5135. Highest Table Number = 04081
  5136. --------!---FILELIST-------------------------
  5137. Please redistribute all of the files comprising the interrupt list (listed at
  5138. the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
  5139. quartet of archives named INTER60A through INTER60D (preferably the original
  5140. authenticated PKZIP archives), the utility programs in a fifth archive
  5141. called INTER60E.ZIP, the WinHelp-related programs in a sixth archive
  5142. named INTER60F.ZIP, and the non-WinHelp hypertext programs in a seventh archive
  5143. names INTER60G.ZIP.
  5144.  
  5145. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  5146. --------!---CONTACT_INFO---------------------
  5147. Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
  5148. FIDO: Ralf Brown 1:129/26.1
  5149.